刚开始学习C#开发项目时,长期会为了写一个安全的高效的数据库连接发愁。我发现现在很多刚开始学习的朋友和有些做了一两年的朋友,也有点犯愁,我就贴上这个代码,给自己以后做个参考,也给朋友做个学习的参考。
我主要在这里统计了.NET项目下常用的数据库连接字符串:SQLServer、Oracle、Access三种数据库(MySql、SQLLite、Excel、HTML Table等等暂不列入)。
一、常用连接字符串参数说明
如需查看详细说明请参见:
SqlConnection.ConnectionstringOracleConnection.ConnectionStringOleDbConnection.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 指定的值,该连接就会被销毁。这在聚集配置中很有用(用于强制执行运行中的服务器和刚置于联机状态的服务器之间的负载平衡)。零 (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(强烈推荐)。 |
二、常用连接字符串实例
如需查看更多实例请参见:各种数据库连接字符串实例
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=密码;
我仅罗列出了一些常用的连接字符串实例和参数说明。我原本是准备根据每种数据库来分别详细的阐述连接字符串的实例和参数说明,后来没有这么做,因为 这篇帖子主要是为了满足刚开始学习的朋友的需求,因为基本能适应大部分项目需要了。如果是需求,并发数很高的项目,则需要自行对项目、数据库、服务器等等 进行优化和改造,在这里就不详细阐述了。