剛開始學習C#開發項目時,長期會為了寫一個安全的高效的資料庫連接發愁。我發現現在很多剛開始學習的朋友和有些做了一兩年的朋友,也有點犯愁,我就貼上這個代碼,給自己以後做個參考,也給朋友做個學習的參考。
我主要在這裡統計了.NET項目下常用的資料庫連接字串:SQLServer、Oracle、Access三種資料庫(MySql、SQLLite、Excel、HTML Table等等暫不列入)。
一、常用連接字串參數說明
如需查看詳細說明請參見:
SqlConnection.Connectionstring
OracleConnection.ConnectionString
OleDbConnection.ConnectionString
關鍵字 |
預設 |
描述 |
Server 或 Data Source |
N/A |
要串連的資料庫執行個體的名稱或網路地址(可以在名稱後指定連接埠號碼),指定本地執行個體可用(Local),如果是SqlExpress(名稱\SqlExpress)。 |
Initial Catalog 或 Database |
N/A |
資料庫的名稱。 |
User ID 或 UID |
N/A |
登入帳戶。 |
Password 或 Pwd |
N/A |
帳戶登入的密碼。 |
Persist Security Info |
'false' |
當該值設定為 false 或 no(強烈推薦)時,如果串連是開啟的或者一直處於開啟狀態,那麼安全敏感資訊(如密碼)將不會作為串連的一部分返回。重設連接字串將重設包括密碼在內的所有連接字串值。可識別的值為 true、false、yes 和 no。 |
Enlist |
'false' |
true 表明串連池程式在建立線程的當前事務上下文中自動登記串連。可識別的值為 true、false、yes 和 no。 |
Connection Lifetime |
0 |
當串連被返回到池時,將其建立時間與目前時間作比較,如果時間長度(以秒為單位)超出了由 Connection Lifetime 指定的值,該串連就會被銷毀。這在聚集配置中很有用(用於強制執行運行中的伺服器和剛置於聯機狀態的伺服器之間的Server Load Balancer)。零 (0) 值將使池串連具有最大的連線逾時。 |
Max Pool Size |
100 |
池中允許的最大串連數。 |
Min Pool Size |
0 |
池中允許的最小串連數。 |
Pooling |
'true' |
當該值為 true 時,系統將從適當的池中提取 DbConnection 對象,或在需要時建立該對象並將其添加到適當的池中。可識別的值為 true、false、yes 和 no。 |
Packet Size |
8192 |
用來與 SQL Server 的執行個體進行通訊的網路資料包的大小,以位元組為單位。 |
AttachDBFilename 或 extended properties 或 Initial File Name |
N/A |
主要資料庫檔案的名稱,包括可串連資料庫的完整路徑名。只有具有 .mdf 副檔名的主要資料檔案才支援 AttachDBFilename。 如果主要資料檔案為唯讀,則附加操作將失敗。 該路經可以是絕對路徑,也可以是相對路徑,這取決於是否使用 DataDirectory 替換字串。如果使用 DataDirectory,則對應的資料庫檔案必須存在於替換字串指向的目錄的子目錄中。 備忘:遠程伺服器、HTTP 及 UNC 路徑名不受支援。 執行個體:必須按照如下方式使用關鍵字“database”(或其別名之一)指定資料庫名稱: "AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase" 如果資料檔案所在的目錄中存在記錄檔,並且在附加主要資料檔案時使用了“database”關鍵字,則會建置錯誤。這種情況下,請移除記錄檔。附加了資料庫後,系統將根據實體路徑自動產生一個新的記錄檔。 |
Integrated Security 或 Trusted_Connection |
'false' |
當為 false 時,將在串連中指定使用者識別碼 和密碼。當為 true 時,將使用當前的 Windows 帳戶憑據進行身分識別驗證。可識別的值為 true、false、yes、no 以及與 true 等效的 sspi(強烈推薦)。 |
二、常用連接字串執行個體
如需查看更多執行個體請參見:各種資料庫連接字串執行個體
SQLServer簡易串連: Server=伺服器位址;Database=資料庫名稱;User Id=使用者名稱;Password=密碼;SQLServer本地檔案可信串連: Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf;Database=資料庫名稱;Trusted_Connection=sspi;SqlServer自訂串連: Data Source=(LOCAL);Initial Catalog=資料庫名稱;User ID=使用者名稱;Password=密碼;Persist Security Info=True;Enlist=true;Max Pool Size=300;Min Pool Size=0;Connection Lifetime=300;Packet Size=1000;Oracle簡易串連: Data Source=orclsid_127.0.0.1;User Id=使用者名稱;Password=密碼; //這個資料來源是從Oracle的安裝目錄下tnsnames.ora檔案中去找的。而並非是在系統的“管理工具”下的“資料來源(ODBC)”中找。這個tnsnames.ora檔案是在Oracle的安裝目錄下的“client_1/network/admin/”下。Oracle自訂串連: Server=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=伺服器位址)(PORT=連接埠號碼)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=資料庫名稱)));User Id=使用者名稱;Password=密碼;Persist Security Info=True;Enlist=true;Max Pool Size=300;Min Pool Size=0;Connection Lifetime=300;Access簡易串連: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=使用者名稱;Password=密碼; Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;Jet OLEDB:Database Password=密碼;
我僅羅列出了一些常用的連接字串執行個體和參數說明。我原本是準備根據每種資料庫來分別詳細的闡述連接字串的執行個體和參數說明,後來沒有這麼做,因為 這篇文章主要是為了滿足剛開始學習的朋友的需求,因為基本能適應大部分項目需要了。如果是需求,並發數很高的項目,則需要自行對項目、資料庫、伺服器等等 進行最佳化和改造,在這裡就不詳細闡述了。