這是我的第一篇文章,既然是第一篇了,那就從最基礎的只是說起--web.config中配置數據庫連接。
網上有很多這方面的資料,但發現並沒有一篇從頭到位很清楚明了說完的,今天就把我的整理寫在這里吧。
在網站開發中,數據庫操作是經常要用到的操作,ASP.NET中一般做法是在web.config中配置數據庫連接代碼,然后在程序中調用數據庫連接代碼,這樣做的好處就是當數據庫連接代碼需要改變的時候,我們只要修改web.config中的數據庫連接代碼即可,而不必在修改每一個頁面中的數據庫連接代碼。
在ASP.NET中有兩種配置數據庫連接代碼的方式,它們分別是 appSettings 和 connectionStrings 。在使用 appSettings 和 connectionStrings 配置數據庫連接代碼時,可分別在 <configuration> 下添加如下代碼:
1. appSettings
<appSettings>
<add key="conn1" value="server=服務器名;database=數據庫名;uid=用戶名;password=密碼;"/>
<!--如需配置多個直接添加就好,連接時是通過key獲取的-->
<add key="conn2" value="server=服務器名;database=數據庫名;uid=用戶名;password=密碼;"/>
</appSettings>
或者 另外建立一個配置文件,只要在webconfig中引用一下就好,示例
<appSettings configSource="App_Data\TestConfig.config"></appSettings>
如果庫比較少的話直接在本頁面配置就好。當連接的庫比較多時,建議使用第二種,看起來更清晰不是(個人認為功能上無差別)。
2. connectionStrings
<connectionStrings>
<add name="conn1" connectionString="server=服務器名;database=數據庫名;uid=用戶名;password=密碼" providerName="System.Data.SqlClient" />這里注意一下,AppSettings連接時並不需要寫命名空間
<!--如需配置多個直接添加就好,連接時是通過name獲取的-->
<add name="conn2" connectionString="server=服務器名;database=數據庫名;uid=用戶名;password=密碼" providerName="System.Data.SqlClient" />
</connectionStrings>
當然了,既然appSettings可以引用外部,相應connectionStrings也可以,示例
<connectionStrings configSource="外部文件路徑">
appSettings 和 connectionStrings 的區別:(摘自http://www.cnblogs.com/kerry1986/archive/2009/07/08/1518895.html)
(1) appSettings 是在 2003 中常用的,connectionStrings 是在 2005 中常用的;
(2) 使用 connectionStrings 的好處:
第一,可將連接字符串加密,使用MS的一個加密工具即可;
第二,可直接綁定數據源控件,而不必寫代碼讀出來再賦值給控件;
第三,可方便的更換數據庫平台,如換為 Oracle 數據庫,只需要修改 providerName。
(3) 寫在 appSettings 中用 System.Configuration.ConfigurationManager.AppSettings["keyname"] 獲取數據庫連接代碼值;
寫在 connectionStrings 中用 System.Configuration.ConfigurationManager.ConnectionStrings["name"] 獲取數據庫連接代碼值。
據說兩者通用,但是第二種是asp.net2.0的新特性,建議使用第一種。
其實我一直有個疑問,兩個字符串中的UID;PWD;和User ID; Password;是否等價。
根據網上我查到的資料是可以互換通用的。 網上找到了個貌似更詳細的解釋: 連接SQL Server數據庫的機制與連接Access的機制沒有什么太大的區別,只是改變了Connection對象和連接字符串中的不同參數.
Access 數據庫使用的命名空間是System.Data.OleDb。
2003:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=XXX.mdb
2007:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=XXX.accdb;
<appSettings>
<add key="ConnectionString" value="Provider=Microsoft.Jet.OLEDB.12.0;Data Source=|DataDirectory|\DB_JiXiang.mdb"/>
</appSettings>
說明:這里的|DataDirectory|是代表App_Data文件夾。測試的不能使用connectionStrings,提示Provider不適別。
首先,連接SQL Server使用的命名空間不是"System.Data.OleDb",而是"System.Data.SqlClient".
其次就是他的連接字符串了,我們一個一個參數來介紹(注意:參數間用分號分隔):
"user id=sa":連接數據庫的驗證用戶名為sa.他還有一個別名"uid",所以這句我們還可以寫成"uid=sa". "password=":連接數據庫的驗證密碼為空.他的別名為"pwd",所以我們可以寫為"pwd=".
這里注意,你的SQL Server必須已經設置了需要用戶名和密碼來登錄,否則不能用這樣的方式來登錄.如果你的SQL Server設置為Windows登錄,那么在這里就不需要使用"user id"和"password"這樣的方式來登錄,而需要使用"Trusted_Connection=SSPI"來進行登錄.
"initial catalog=Northwind":使用的數據源為"Northwind"這個數據庫.他的別名為"Database",本句可以寫成"Database=Northwind".
"Server=YourSQLServer":使用名為"YourSQLServer"的服務器.他的別名為"Data Source","Address","Addr".
如果使用的是本地數據庫且定義了實例名,則可以寫為"Server=(local)\實例名";如果是遠程服務器,則將"(local)"替換為遠程服務器的名稱或IP地址.
"Connect Timeout=30":連接超時時間為30秒.