ADO.NET 中的連接字串

連接字串 (Connection String) 包含可當做參數從資料提供者 (Data Provider) 傳遞至資料來源的初始化資訊。 資料提供者會接收連接字串作為 DbConnection.ConnectionString 屬性的值。 此提供者會剖析連接字串,並確保語法正確且支援關鍵字。 然後,DbConnection.Open() 方法會將剖析的連線參數傳遞至資料來源。 資料來源會執行進一步驗證,並建立連線。

連接字串語法

連接字串是分號分隔的機碼/值參數組清單:

keyword1=value; keyword2=value;

關鍵字不區分大小寫。 不過,視資料來源而定,值可能區分大小寫。 關鍵字與值均可包含空白字元 \(英文\)。 關鍵字與不具引號的值均會忽略開頭與尾端空白字元。

如果值包含分號、Unicode 控制字元 \(英文\),或者開頭或尾端空白字元,則必須以單引號或雙引號括起來。 例如:

Keyword=" whitespace  ";
Keyword='special;character';

含括字元可能不會出現在其括起來的值內。 因此,包含單引號的值只能用雙引號括起來,反之亦然:

Keyword='double"quotation;mark';
Keyword="single'quotation;mark";

您也可以透過一併使用這兩者來逸出含括字元:

Keyword="double""quotation";
Keyword='single''quotation';

引號本身與等號均不需逸出,因此下列連接字串是有效的:

Keyword=no "escaping" 'required';
Keyword=a=b=c

由於每個值都會讀取到下一個分號或字串結尾為止,因此後者範例的值是 a=b=c,最後一個分號為選擇性。

所有連接字串都會共用上述的相同基本語法。 不過,已辨識的關鍵字集取決於提供者,而且已從舊版 API (例如 ODBC) 演變而來。 SQL Server (SqlClient) 的 .NET Framework 資料提供者支援許多來自較舊 API 的關鍵字,但通常更有彈性,而且可接受許多常用連接字串關鍵字的同義字。

輸入錯誤可能導致錯誤。 例如,Integrated Security=true 是有效的,但 IntegratedSecurity=true 會導致錯誤。

在執行階段從未驗證的使用者輸入手動建構的連接字串容易受到字串插入式攻擊,並且會危及資料來源的安全性。 為了解決這些問題,ADO.NET 2.0 已針對每個 .NET Framework 資料提供者引入連接字串建立器。 這些連接字串建立器會公開參數作為強類型屬性,而且能夠在將連接字串傳送至資料來源之前進行驗證。

本節內容

連接字串產生器
示範如何使用 ConnectionStringBuilder 類別在執行階段建構有效的連接字串。

連接字串與組態檔
示範如何在組態檔中儲存及擷取連接字串。

連接字串語法
說明如何針對SqlClientOracleClientOleDbOdbc 設定提供者專用的連接字串。

保護連接資訊
示範的技術可保護用於連接至資料來源的資訊。

另請參閱