標籤:archive title 資料庫 value 檔案 sql 不同 密碼 信任
摘要
ADO.NET強大的優勢在於對不同的資料來源提供一致的訪問。在上一篇文章《你必須知道的ADO.NET(二)瞭解.NET資料提供者》中,我們知道.NET對不同資料來源,使用不同的資料提供者,這使得我們可以更高效的訪問相應的資料來源。除了.NET資料提供者外,我還得說說另外一位功臣:連接字串(Connection Strings),它也為ADO.NET在解決“不同”與“一致”的矛盾中,貢獻出了非常重要的力量。
目錄
- 什麼是連接字串?
- 理解文法格式
- 例舉幾種典型連接字串
- 如何構造連接字串?
- 在設定檔中儲存連接字串
1. 什麼是連接字串?
我們已經知道,ADO.NET類庫為不同的外部資料源提供了一致的訪問。這些資料來源可以是本地的資料檔案(如excel、txt、access,甚至是SQLite),也可以是遠端資料庫伺服器(如SQL Server、MySQL、DB2、Oracle等)。資料來源似乎琳琅滿目,魚龍混雜。請試想一下,ADO.NET如何能夠準確而又高效的訪問到不同資料來源呢?在上一篇《你必須知道的ADO.NET(二)瞭解.NET資料提供者》中,你或許已經清楚,ADO.NET已經為不同的資料來源編寫了不同的資料提供者。但是這個前提是,我們得訪問到正確的資料來源。否則的話,只會“張冠李戴,驢頭不對馬嘴”。就好比,我們用SQL Server資料提供者去處理excel資料來源,結果肯定是讓人“瞠目結舌”的。英雄總在最需要的時候出現,連接字串,就是這樣一組被格式化的索引值對:它告訴ADO.NET資料來源在哪裡,需要什麼樣的資料格式,提供什麼樣的訪問信任層級以及其他任何包括串連的相關資訊。哦!如果你這樣想的話,那麼以後你使用連接字串的時候,或許就不會小覷了吧!
2.理解文法格式
其實,連接字串雖然影響深遠,但是其本身的文法卻是十分的簡單。連接字串由一組元素組成,一個元素包含一個索引值對,元素之間由“;”分開。文法如下:
key1=value1;key2=value2;key3=value3...
典型的元素(索引值對)應當包含這些資訊:資料來源是基於檔案的還是基於網路的資料庫伺服器,是否需要帳號密碼來訪問資料來源,逾時的限制是多少,以及其他相關的配置資訊。我們知道,值(value)是根據鍵(key)來確定的,那麼鍵(key)如何來確定呢?文法並沒有規定鍵(key)是什麼,這需要根據你需要串連的資料來源來確定的。在下一節中,我將詳細講解幾種常用的連接字串。
提示:如果需要瞭解更多連接字串的格式,可以參考 http://www.connectionstrings.com/。
3.例舉幾種典型連接字串3.1 SQL Sever連接字串
(1)標準的安全連線
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
說明:
Data Source:需要已連線的服務器。需要注意的是,如果使用的時Express版本的SQL Server需要在伺服器名後加\SQLEXPRESS。例如,串連本地的SQL Server 2008 Express版本的資料庫伺服器,可以寫成Data Source = (local)\SQLEXPRESS或者.\SQLEXPRESS。
Initial Catalog:預設使用的資料庫名稱。
User ID:資料庫伺服器帳號。
Password:資料庫伺服器密碼。
或者也可以寫成這樣:
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;
(2)可信串連
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
說明:
Data Source:與上述相同。
Initial Catalog:與上述相同。
Integrate Security:使用存在的windows安全性憑證訪問資料庫。
或者也可以寫成這樣:
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
3.2 Access連接字串
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;Password=;
3.3 MySQL連接字串
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
3.4 DB2連接字串
Server=myAddress:myPortNumber;Database=myDataBase;UID=myUsername;PWD=myPassword;
3.5 Oracle連接字串
Data Source=TORCL;User Id=myUsername;Password=myPassword;
4.如何構造連接字串?
在上面我們知道,連接字串本質上就是一個字串,因此我們完全可以用
string connStr = "Data Source=myServerAddress;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword";
來構造一個連接字串。實際上,ADO.NET有一個專門的類來處理連接字串:DbConnectionStringBuilder。DbConnectionStringBuilder類為強型別連接字串產生基類。之所以要有這樣一個類,是因為它更加安全與友好。以SQL Server為例,可以這樣構建一個連接字串:
1 SqlClient.SqlConnectionStringBuilder builder =
2 new SqlClient.SqlConnectionStringBuilder();
3 builder.DataSource = @"(local)\SQLEXPRESS";
4 builder.InitialCatalog = "myDataBase";
5 builder.IntegratedSecurity = true;
5.在設定檔中儲存連接字串
在我們實際開發中,我們一般不會把連接字串直接寫在代碼中,而是儲存在設定檔裡。把連接字串寫死在代碼中,不便於維護,每次修改字串時,還得重新編譯代碼。以ASP.NET應用程式為例,我們一般把連接字串寫在web.config設定檔的<connectionstrings />節點。例如:
1 <connectionStrings>
2 <add name="connStr" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=myDataBase;Integrated Security=SSPI" />
3 </connectionStrings>
因此,我們只需要在程式中添加相應代碼來擷取設定檔中的值,比如:
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ToString();
ADO.NET入門教程(三) 連接字串,你小覷了嗎?