本文出處:http://www.cnblogs.com/zxin/ (作者:zxin)
剛開始學習C#開發項目時,長期會為了寫一個安全的高效的數據庫連接發愁。我發現現在很多剛開始學習的朋友和有些做了一兩年的朋友,也有點犯愁,我就貼上這個代碼,給自己以后做個參考,也給朋友做個學習的參考。
我主要在這里統計了.NET項目下常用的數據庫連接字符串:SQLServer、Oracle、Access三種數據庫(MySql、SQLLite、Excel、HTML Table等等暫不列入)。
一、常用連接字符串參數說明
如需查看詳細說明請參見:
SqlConnection.Connectionstring
OracleConnection.ConnectionString
OleDbConnection.ConnectionString
本文出處:http://www.cnblogs.com/zxin/ (作者:zxin)
關鍵字 | 默認 | 描述 |
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 指定的值,該連接就會被銷毀。這在聚集配置中很有用(用於強制執行運行中的服務器和剛置於聯機狀態的服務器之間的負載平衡)。零 (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 時,將在連接中指定用戶 ID 和密碼。當為 true 時,將使用當前的 Windows 帳戶憑據進行身份驗證。可識別的值為 true、false、yes、no 以及與 true 等效的 sspi(強烈推薦)。 |
本文出處:http://www.cnblogs.com/zxin/ (作者:zxin)
二、常用連接字符串實例
如需查看更多實例請參見:各種數據庫連接字符串實例
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=密碼;
本文出處:http://www.cnblogs.com/zxin/ (作者:zxin)
我僅羅列出了一些常用的連接字符串實例和參數說明。我原本是准備根據每種數據庫來分別詳細的闡述連接字符串的實例和參數說明,后來沒有這么做,因為這篇帖子主要是為了滿足剛開始學習的朋友的需求,因為基本能適應大部分項目需要了。如果是需求,並發數很高的項目,則需要自行對項目、數據庫、服務器等等進行優化和改造,在這里就不詳細闡述了。