資料庫的連接性已經發展成為應用程式開發的一個標準面向。資料庫連接字串現在已經成為每個項目的標準必備條件。我發現自己為了找到所需的句法,經常要從另外一個應用程式複製連接字串或進行一次搜尋。這個在與SQL Server互動操作時更是如此,因為它有太多的連接字串選項。現在就讓我們來研究一下連接字串的眾多面向。
連接字串
在物件實例化或建立期間,資料庫連接字串透過屬性或方法傳遞到必要的物件。連接字串的格式是一個以分號為界,劃分鍵/值參數對的列表。列表A中包含了一個C#中的例子,說明如何用建立SqlConnection物件的方法連接到SQL Server(實際的連接字串是透過物件的ConnectionString屬性分配的)。列表B中包含的是VB.NET的版本。
列表A
string cString = "Data Source=server;Initial Catalog=db;User ID=test;Password=test;";
SqlConnectionconn = new SqlConnection();
conn.ConnectionString = cString;
conn.Open();
列表B
Dim cString As String
cString = "Data Source=server;Initial Catalog=db;User ID=test;Password=test;"
Dim conn As SqlConnection = New SqlConnection()
conn.ConnectionString = cString
conn.Open()
連接字串會指定資料庫伺服器和資料庫,以及存取資料庫必需的使用者名稱和密碼。但是這種格式並不是對所有資料庫互動都適用,它的確有許多可用的選項,其中許多選項都有同義詞。
和Data Source(資料來源)、Initial Catalog(初始編目)、User ID(使用者ID)、和Password(密碼)等元素一起,以下這些選項都是可用的:
Application Name(應用程式名稱):應用程式的名稱。如果沒有被指定的話,它的值為.NET SqlClient Data Provider(資料提供者).
AttachDBFilename/extended properties(擴充屬性)/Initial File Name(初始檔案名稱):可連接資料庫的主要檔案的名稱,包括完整路徑名稱。資料庫名稱必須用關鍵字資料庫指定。
Connect Timeout(連線逾時)/Connection Timeout(連線逾時):一個到伺服器的連線在終止前等待的時間長度(以秒計),預設值為15。
Connection Lifetime(連結生存時間):當一個連線被返回連接池時,它的創建時間會與當前時間進行對比。如果這個時間跨度超過了連接的有效期限的話,連接就被取消。其缺省值為0。
Connection Reset(連線重設):表示一個連線在從連線池中移除時是否會重設。一個偽的有效在獲得一個連接的時候就無需再進行一個額外的伺服器來回運作,其缺省值為真。
Current Language(目前語言):SQL Server語言記錄的名稱。
Data Source(資料來源)/Server(伺服器)/Address(位址)/Addr(位址)/Network Address(網路位址):SQL Server實例的名稱或網路位址。
Encrypt(加密):當值為真時,如果伺服器安裝了授權證書,SQL Server就會對所有在客戶和伺服器之間傳輸的資料使用SSL加密。被接受的值有true(真)、false(偽)、yes(是)和no(否)。
Enlist(登記):表示連接池程式是否會自動登記建立執行緒的目前事務情境中的連接,其缺省值為真。
Database(資料庫)/Initial Catalog(初始編目):資料庫的名稱。
Integrated Security(整合安全性)/Trusted Connection(受信連線):表示Windows認證是否被用來連接資料庫。它可以被設定成真、偽或是和真對等的sspi,其缺省值為偽。
Max Pool Size(連接池的最大容量):連接池允許的連接數的最大值,其預設值為100。
Min Pool Size(連接池的最小容量):連接池允許的連接數的最小值,其預設值為0。
Network Library(網路庫)/Net(網路):用來建立到一個SQL Server實例的連線的網路庫。支援的值包括: dbnmpntw (Named Pipes)、dbmsrpcn (Multiprotocol/RPC)、dbmsvinn(Banyan Vines)、dbmsspxn (IPX/SPX)和dbmssocn (TCP/IP)。協定的動態連結庫必須安裝到適當的連接,其缺省值為TCP/IP。
Packet Size(資料包大小):用來和資料庫通訊的網路資料包的大小。其缺省值為8192。
Password(密碼)/Pwd:與帳號名稱相對應的密碼。
Persist Security Info(保持安全資訊):用來確定一旦連線建立了以後安全資訊是否可用。如果值為真的話,說明像使用者名稱和密碼這樣對安全性比較敏感的資料可用,而如果值為偽則不可用。重置連接字串將重新配置包括密碼在內的所有連接字串的值。其缺省值為偽。
Pooling(池):決定是否使用連接池。如果值為真的話,連接就要從適當的連接池中獲得,或者,如果需要的話,連接將被創建,然後被加入合適的連接池中。其缺省值為真。
User ID(使用者ID):用來登陸資料庫的帳號名稱。
Workstation ID(工作站ID):連線到SQL Server的工作站的名稱。其預設值為本機的名稱。
下面的連線字串以一個受信連線和指定的登陸憑證(不如管理員密碼空缺安全),在TestDev1伺服器上與Northwind資料庫建立連線: Server=TestDev1;Database=Northwind;User ID=sa;
Password=;Trusted_Connection=True;
下一個連接字串使用了TCIP/IP 和一個指定的IP位址:
Data Source=192.162.1.100,1433;Network Library=DBMSSOCN;
Initial Catalog=Northwind;User ID=sa;Password=;
所使用的選項可以輕鬆地包括在連接字串中,但是它們還是取決於你的應用程式和它的要求。知道什麼是可用的是很有好處的,這樣你就可以恰當地使用它。
使用ADO.NET 2.0
ADO.NET 2.0為每個.NET框架的資料提供者引進了新的連接字串產生器。關鍵字作為屬性被列出,使得連接字串句法在提交到資料來源之前就生效。還有新的類別可以使連接字串在設定檔中的儲存和檢索變得簡單,並且用受保護的方式將它們加密。