連接字串包含作為參數傳遞給資料來源的初始化資訊。在設定後會立即分析連接字串。語法錯誤將產生運行時異常,但是只有在資料來源驗證了連接字串中的資訊後,才可以發現其他錯誤。驗證後,資料來源設定啟用該串連的各種選項。 連接字串關鍵字
連接字串的格式是使用分號分隔的鍵/值參數對列表:
keyword1=value; keyword2=value |
忽略空格,關鍵字不區分大小寫,儘管值可能會區分大小寫,這取決於資料來源的大小寫。要加入包含分號、單引號或雙引號的值,值必須加雙引號。
有效連接字串文法依提供者而異,從早期的 API(例如 ODBC)開始,經曆了多年的發展。SQL Server .NET Framework 資料提供者結合了早期文法中的許多元素,通常對常見的連接字串文法更加寬容。有關 .NET 資料提供者的連接字串關鍵字的更多資訊,請參見 ConnectionString、ConnectionString、ConnectionString 和 ConnectionString。 持續安全資訊
連接字串中 Persist Security Info 關鍵字的預設設定為 false。
Persist Security Info=false; |
如果將該關鍵字設定為 true 或 yes,將允許在開啟串連後,從串連中獲得涉及安全性的資訊(包括使用者標識和密碼)。如果在建立串連時必須提供使用者標識和密碼,最安全的方法是在使用資訊開啟串連後丟棄這些資訊,在 Persist Security Info 設定為 false 或 no 時會發生這種情況。當您向不可信的源提供開啟的串連,或將串連資訊永久儲存到磁碟時,這點尤其重要。如果將 Persist Security Info 保持為 false,可協助確保不可信的源無法訪問串連中涉及安全性的資訊,並協助確保任何涉及安全性的資訊都不會隨連接字串資訊在磁碟上持久化。 使用 Windows 身分識別驗證
我們建議您使用 Windows 身分識別驗證(通常稱為整合式安全性)串連到伺服器資料庫上。要指定 Windows 身分識別驗證,可以對 SQL Server .NET Framework 資料提供者使用下列兩個鍵/值對中的任意一個:
Integrated Security=true;Integrated Security=SSPI; |
但是,只有第二個將適用於 OleDb .NET Framework 資料提供者。為 ConnectionString 設定 Integrated Security=true 將引發異常。
對於 ODBC .NET Framework 資料提供者,必須使用以下鍵/值對指定 Windows 身分識別驗證。
建立連接字串
每個 .NET Framework 資料提供者提供一個從 DbConnectionStringBuilder 繼承的強型別連接字串產生器類。連接字串產生器使開發人員可以通過編程,基於使用者輸入建立文法正確的連接字串,以及分析並重建現有的連接字串。有關更多資訊,請參見 SqlConnectionStringBuilder、OleDbConnectionStringBuilder、OdbcConnectionStringBuilder 和 OracleConnectionStringBuilder。 儲存和檢索連接字串
我們建議您不要在代碼中嵌入連接字串。如果伺服器的位置會更改,您的應用程式將需要重新編譯。此外,編譯成應用程式原始碼的未加密連接字串可以使用 MSIL 反組譯工具 (ildasm.exe) 查看。 將連接字串儲存在設定檔中
為了避免將連接字串儲存在代碼中,可以將代碼儲存在 ASP.NET 應用程式的 web.config 檔案中以及 Windows 應用程式的 app.config 檔案中。
連接字串可以儲存在設定檔的 <connectionStrings> 元素中。連接字串儲存為鍵/值對的形式,可以在運行時使用名稱尋找儲存在 connectionString 屬性中的值。以下設定檔樣本顯示名為 DatabaseConnection 的連接字串,該連接字串引用串連到 SQL Server 本地執行個體的連接字串。
<connectionStrings> <add name="DatabaseConnection" connectionString="Persist Security Info=False;Integrated Security=SSPI;database=Northwind;server=(local);" providerName="System.Data.SqlClient" /></connectionStrings> |
從設定檔中檢索連接字串
System.Configuration 命名空間提供使用設定檔中儲存的配置資訊的類。ConnectionStringSettings 類具有兩個屬性,映射到上面所示的 <connectionStrings> 樣本部分中顯示的名稱。 ConnectionString
連接字串。 Name
<connectionStrings> 部分的連接字串的名稱。
可以使用受保護的配置可選地加密設定檔中儲存的連接字串。請參見使用受保護的配置加密配置資訊、對配置節進行加密和解密和演練:使用受保護的配置加密配置資訊。 |
樣本
以下樣本通過將連接字串的名稱傳遞給 ConfigurationManager,再由其返回 ConnectionStringSettings 對象,以便從設定檔中檢索連接字串。ConnectionString 屬性用於顯示此值。
C# |
using System;using System.Configuration;class Program{ static void Main() { ConnectionStringSettings settings; settings = ConfigurationManager.ConnectionStrings["DatabaseConnection"]; if (settings != null) { Console.WriteLine(settings.ConnectionString); } }} |
SqlClient 連接字串
SqlConnection 的 ConnectionString 屬性可以為 SQL Server 7.0 或更高版本的資料庫擷取或設定連接字串。如果需要串連到早期版本的 SQL Server,必須使用 OleDb .NET 資料提供者。 SqlClient 連接字串文法
串連到 SQL Server 資料庫的文法很靈活。下列每個文法形式均將使用整合式安全性串連到本機伺服器上的 AdventureWorks 資料庫。始終通過名稱或通過關鍵字 (local) 指定伺服器。
"Persist Security Info=False;Integrated Security=true;Initial Catalog=AdventureWorks;Server=MSSQL1""Persist Security Info=False;Integrated Security=SSPI;database=AdventureWorks;server=(local)""Persist Security Info=False;Trusted_Connection=True;database=AdventureWorks;server=(local)" |
要強制使用某個協議,請添加下列首碼之一:
np:(local), tcp:(local), lpc:(local)
對於 SQL Server 身分識別驗證,使用此文法指定使用者名稱和密碼,其中的星號表示有效使用者名稱和密碼。
"Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer" |
有關有效連接字串關鍵字的完整列表,請參見 ConnectionString。 串連到具名執行個體
要串連到 SQL Server 2000 或更高版本的具名執行個體,請使用 server name/instance name 文法。
Server=MySqlServer/MSSQL1;" |
設定網路程式庫
使用此文法通過 IP 位址串連,其中的網路程式庫為 Win32 Winsock TCP/IP,1433 為正在使用的連接埠(預設值)。
Network Library=dbmssocn;Data Source=000.000.000.000,1433; |
SQL Server 在建立串連時允許使用下列網路程式庫。 dbnmpntw
Win32 具名管道 dbmssocn
Win32 Winsock TCP/IP dbmsspxn
Win32 SPX/IPX dbmsvinn
Win32 Banyan Vines dbmsrpcn
Win32 多重協議 (Windows RPC) OleDb 連接字串
通過 OleDbConnection 的 ConnectionString 屬性可以為 OLE DB 資料來源(例如 Microsoft Access 或 SQL Server 6.5 或更低版本)擷取或設定連接字串。對 SQL Server 7.0 或更高版本使用 SqlConnection。 OleDb 連接字串文法
必須為 OleDbConnection 連接字串指定提供者名稱。以下連接字串使用 Jet 提供者串連到 Microsoft Access 資料庫。注意,如果資料庫未受保護(預設設定),UserID 和 Password 關鍵字是可選的。
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:/Northwind.mdb;User ID=Admin;Password=; |
如果資料庫受保護,必須提供工作群組資訊檔案的位置。
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/Northwind.mdb;Jet OLEDB:System Database=d:/NorthwindSystem.mdw;User ID=*****;Password=*****; |
對於 SQL Server 6.5 或更低版本,請使用 sqloledb 關鍵字。
Provider=sqloledb;Data Source=MySqlServer;Initial Catalog=pubs;User Id=*****;Password=*****; |
不要使用通用資料連結檔案
可以在通用資料連結 (UDL) 檔案中提供 OleDbConnection 的串連資訊;但是,應避免這樣做。UDL 檔案未加密,會以明文的形式公開連接字串資訊。因為 UDL 檔案對應用程式來說是基於外部檔案的資源,所以,無法使用 .NET Framework 保護其安全。 串連到 Excel
Microsoft Jet 提供者用於串連到 Excel 活頁簿。在以下連接字串中,Extended Properties 關鍵字設定 Excel 特定的屬性。“HDR=Yes;”指示第一行中包含列名,而不是資料,“IMEX=1;”通知驅動程式始終將“互混”資料列作為文本讀取。注意
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"" |
注意,Extended Properties 所需的雙引號必須還要加雙引號。 Data Shape 提供者連接字串文法
在使用 Microsoft Data Shape 提供者時,應同時使用 Provider 和 Data Provider 關鍵字。以下樣本使用 Shape 提供者串連到 SQL Server 的本地執行個體。
"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=(local);Initial Catalog=pubs;Integrated Security=SSPI;" |
Odbc 連接字串
OdbcConnection 的 ConnectionString 屬性可以為 OLE DB 資料來源擷取或設定連接字串。以下連接字串使用 Microsoft 文本驅動程式。
Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:/bin |
有關 ODBC 連接字串文法的更多資訊,請參見 ConnectionString。 Oracle 連接字串
OracleConnection 的 ConnectionString 屬性可以為 OLE DB 資料來源擷取或設定連接字串。
Data Source=Oracle9i;User ID=*****;Password=*****; |
有關 ODBC 連接字串文法的更多資訊,請參見 ConnectionString。