SqlConnection.ConnectionString 屬性

- 中國WEB開發者網絡 (http://www.webasp.net)
-- 技術教程 (http://www.webasp.net/article/)
--- SqlConnection.ConnectionString 屬性 (http://www.webasp.net/article/22/21243.htm)
-- 作者:未知
-- 發佈日期: 2005-04-29

ConnectionString 類似於 OLE DB 連接字符串,但並不相同。與 OLE DB 或 ADO 不同,如果“Persist Security Info ”值設置為 false(默認值),則返回的連接字符串與用戶設置的 ConnectionString 相同但去除了安全信息。除非將“Persist Security Info ”設置為 true,否則,SQL Server .NET Framework 數據提供程序將不會保持,也不會返回連接字符串中的密碼。

可以使用 ConnectionString 屬性連接到數據庫。下面的示例闡釋了一個典型的連接字符串。

"Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer"



只有在連接關閉時才能設置 ConnectionString 屬性。許多連接字符串值都具有相應的只讀屬性。當設置連接字符串時,將更新所有這些屬性(除非檢測到錯誤)。檢測到錯誤時,不會更新任何屬性。SqlConnection 屬性只返回那些包含在 ConnectionString 中的設置。

若要連接到本地機器,請將服務器指定為“(local)”。(必須始終指定一個服務器。)

重置已關閉連接上的 ConnectionString 會重置包括密碼在內的所有連接字符串值(和相關屬性)。例如,如果設置一個連接字符串,其中包含“Database= northwind”,然後再將該連接字符串重置為“Data Source=myserver;Integrated Security=SSPI”,則 Database 屬性將不再設置為 Northwind。

在設置後會立即分析連接字符串。如果在分析時發現語法中有錯誤,則產生運行庫異常,如 ArgumentException。只有當試圖打開連接時,才會發現其他錯誤。

連接字符串的基本格式包括一系列由分號分隔的關鍵字/值對。等號 (=) 連接各個關鍵字及其值。若要包括含有分號、單引號字符或雙引號字符的值,則該值必須用雙引號括起來。如果該值同時包含分號和雙引號字符,則該值可以用單引號括起來。如果該值以雙引號字符開始,則還可以使用單引號。相反地,如果該值以單引號開始,則可以使用雙引號。如果該值同時包含單引號和雙引號字符,則用於將值括起來的引號字符每次出現時,都必須成對出現。

若要在字符串值中包括前導或尾隨空格,則該值必須用單引號或雙引號括起來。即使將整數、布爾值或枚舉值用引號括起來,其周圍的任何前導或尾隨空格也將被忽略。然而,保留字符串關鍵字或值內的空格。使用 .NET Framework 1.1 版時,在連接字符串中可以使用單引號或雙引號而不用使用分隔符(例如,Data Source= my'Server 或 Data Source= my"Server),但引號字符不可以為值的第一個或最後一個字符。

若要在關鍵字或值中包括等號 (=),則它之前必須還有另一個等號。例如,在假設的連接字符串中,

"key==word=value"



關鍵字是“key=word”並且值是“value”。

如果“keyword= value”對中的一個特定關鍵字多次出現在連接字符串中,則將所列出的最後一個用於值集。

關鍵字不區分大小寫。

下表列出了 ConnectionString 中的關鍵字值的有效名稱。

名稱默認值說明Application Name 應用程序的名稱,如果不提供應用程序名稱,默認是:“.Net SqlClient Data Provider”AttachDBFilename- 或 -extended properties- 或 -Initial File Name  可連接數據庫的主文件的名稱,包括完整的路徑名。
必須使用關鍵字“database”來指定數據庫的名稱。

Connect Timeout - 或 -Connection Timeout
15在終止嘗試連接並產生錯誤之前,等待與服務器的連接的時間長度(以秒為單位)。Current Language SQL Server 語言
Data Source - 或 -Server- 或 -Address- 或 -Addr- 或 -Network Address
 要連接的 SQL Server 實例的名稱或網絡地址。Encrypt'false'當該值為 true 時,如果服務器端安裝了證書,則 SQL Server 將對所有在客戶端和服務器之間傳送的數據使用 SSL 加密。可識別的值為 true、false、yes 和 no。
Initial Catalog- 或 -Database
 數據庫的名稱。
Integrated Security - 或 -Trusted_Connection
'false'當為 false 時,將在連接中指定用戶 ID 和密碼。當為 true 時,將使用當前的 Windows 帳戶憑據進行身份驗證。
可識別的值為 true、false、yes、no 以及與 true 等效的 sspi(強烈推薦)。

Network Library - 或 -Net
'dbmssocn'用於建立與 SQL Server 實例的連接的網絡庫。支持的值包括 dbnmpntw(命名管道)、dbmsrpcn(多協議)、dbmsadsn (Apple Talk)、dbmsgnet (VIA)、dbmslpcn(共享內存)及 dbmsspxn (IPX/SPX) 和 dbmssocn (TCP/IP)。
相應的網絡 DLL 必須安裝在要連接的系統上。如果不指定網絡而使用一個本地服務器(比如“.”或“(local)”),則使用共享內存。
Packet Size8192用來與 SQL Server 的實例進行通訊的網絡數據包的大小,以字節為單位。
Password - 或 -Pwd
 SQL Server 帳戶登錄的密碼(建議不要使用。為了維護最高級別的安全性,強烈建議改用 Integrated Security 或 Trusted_Connection 關鍵字)。Persist Security Info'false'當該值設置為 false 或 no(強烈推薦)時,如果連接是打開的或者一直處於打開狀態,那麼安全敏感信息(如密碼)將不會作為連接的一部分返回。重置連接字符串將重置包括密碼在內的所有連接字符串值。可識別的值為 true、false、yes 和 no。User ID SQL Server 登錄帳戶(建議不要使用。為了維護最高級別的安全性,強烈建議改用 Integrated Security 或 Trusted_Connection 關鍵字)。Workstation ID本地計算機名稱連接到 SQL Server 的工作站的名稱。

下表列出了 ConnectionString 內連接池值的有效名稱。有關連接池的更多信息,請參見 SQL Server .NET Framework 數據提供程序連接池。

名稱默認值說明Connection Lifetime0當連接被返回到池時,將其創建時間與當前時間作比較,如果時間長度(以秒為單位)超出了由 Connection Lifetime 指定的值,該連接就會被銷毀。這在聚集配置中很有用(用於強制執行運行中的服務器和剛置於聯機狀態的服務器之間的負載平衡)。
零 (0) 值將使池連接具有最大的連接超時。
Connection Reset'true'確定從池中提取數據庫連接時是否重置數據庫連接。對於 Microsoft SQL Server 7.0 版,設置為 false 可避免獲取連接時再有一次額外的服務器往返行程,但須注意此時並未重置連接狀態(如數據庫上下文)。Enlist'true'當該值為 true 時,池程序在創建線程的當前事務上下文中自動登記連接。可識別的值為 true、false、yes 和 no。Max Pool Size100池中允許的最大連接數。Min Pool Size0池中允許的最小連接數。Pooling'true'當該值為 true 時,系統將從相應池中提取 SQLConnection 對象,或在必要時創建該對象並將其添加到相應池中。可識別的值為 true、false、yes 和 no。

當設置需要布爾值的關鍵字或連接池值時,您可以使用 'yes' 代替 'true','no' 代替 'false'。整數值表示為字符串。

注意   SQL Server .NET Framework 數據提供程序使用它自己的協議與 SQL Server 進行通信。因此,當連接到 SQL Server 時,它不支持 ODBC 數據源名稱 (DSN) 的使用,因為它不添加 ODBC 層。 警告   在此版本中,在應用程序中根據用戶輸入構造連接字符串時(例如,從對話框中檢索用戶 ID 和密碼信息並將其追加到連接字符串時)應相當謹慎。應用程序應確保用戶無法在這些值中嵌入額外的連接字符串參數(例如,輸入“validpassword;database=somedb”作為密碼,以試圖連接到其他數據庫)。
示例
[Visual Basic, C#] 下面的示例創建一個 SqlConnection並設置它的一些屬性。

[Visual Basic] Public Sub CreateSqlConnection() Dim myConnection As New SqlConnection() myConnection.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer;Connect Timeout=30" myConnection.Open()End Sub 'CreateSqlConnection



[C#] public void CreateSqlConnection() { SqlConnection myConnection = new SqlConnection(); myConnection.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer;Connect Timeout=30"; myConnection.Open(); }

webasp.net