普通的数据库连接
<configuration>
<appSettings/>
<connectionStrings>
<add name="SiteDBConnection" connectionString="Data Source=(local);database=cxy;uid=ccc;pwd=198583"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true">
</compilation>
<authentication mode="Windows" />
</system.web>
</configuration>
说明:database:数据库名称, uid:拥有访问该数据库权限的用户 pwd 密码
先来看一下默认的连接SQL Server数据库配置
<connectionStrings>
<add name="LocalSqlServer" connectionString="Data Source=./SQLExpress;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
</connectionStrings>
SqlConnectionStringBuilder实例化时需要使用connectionString。如:SqlConnectionStringBuild builder = new SqlConnectionStringBuild(connectionString);
一、Data Source
SqlConnectionStringBuilder的DataSource属性,对应connectionString中的Data Source,“Data Source”可以由下列字符串代替:“Server”,“Address”,“Addr”和“Network Address”。
Data Source=./SQLExpress也可以写成这样Data Source=(local)/SQLExpress。
二、Integrated Security
SqlConnectionStringBuilder 的 IntegratedSecurity 属性,对应 connectionString 中的 Integrated Security,“Integrated Security”可以写成“trusted_connection”。
为 True 时,使用当前的 Windows 帐户凭据进行身份验证,为 False 时,需要在连接中指定用户 ID 和密码。可识别的值为 True、False、Yes、No 以及与 True 等效的 SSPI。
如果没有些则必须写上 uid=sa;pwd=123 之类的设置“uid”也可使用“User ID”,“pwd”也可换为“PassWord”。
SSPI:Microsoft安全支持提供器接口(SSPI)是定义得较全面的公用API,用来获得验证、信息完整性、信息隐私等集成安全服务,以及用于所有分布式应用程序协议的安全方面的服务。
应用程序协议设计者能够利用该接口获得不同的安全性服务而不必修改协议本身。
三、AttachDBFilename
SqlConnectionStringBuilder 的 AttachDBFilename 属性,对应 connectionString 中的 AttachDBFilename,“AttachDBFilename”可以写成“extended properties”,“initial file name”。
AttachDbFileName 属性指定连接打开的时候动态附加到服务器上的数据库文件的位置。
这个属性可以接受数据库的完整路径和相对路径(例如使用|DataDirectory|语法),在运行时这个路径会被应用程序的 App_Data 目录所代替。
四、User Instance
SqlConnectionStringBuilder 的 UserInstance 属性,对应 connectionString 中的 User Instance ,该值指示是否将连接从默认的 SQL Server 实例重定向到在调用方帐户之下运行并且在运行时启动的实例。
UserInstance=true 时,SQLServerExpress 为了把数据库附加到新的实例,建立一个新的进程,在打开连接的用户身份下运行。
在 ASP.NET 应用程序中,这个用户是本地的 ASPNET 帐号或默认的 NetworkService,这依赖于操作系统。
为了安全地附加非系统管理员帐号(例如ASP.NET帐号)提供的数据库文件,建立一个独立的 SQLServer 用户实例是必要的。
五、Initial Catalog 等同于 Database。
六、providerName 指定值“System.Data.OracleClient”,该值指定 ASP.NET 在使用此连接字符串进行连接时应使用 ADO.NET System.Data.OracleClient 提供程序。
PS:
DataDirectory是什么?
asp.net 2.0有一个特殊目录app_data,通常Sql Server 2005 express数据文件就放在这个目录,相应的数据库连接串就是:
connectionString="…… data source=./SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|data.mdf;User Instance=true"
这里有一个DataDirectory的宏,它表示什么意义呢?
DataDirectory是表示数据库路径的替换字符串。由于无需对完整路径进行硬编码,DataDirectory 简化了项目的共享和应用程序的部署。例如,无需使用以下连接字符串:
"Data Source= c:/program files/MyApp/app_data/Mydb.mdf"
通过使用|DataDirectory|(包含在如下所示的竖线中),即可具有以下连接字符串:
"Data Source = |DataDirectory|/Mydb.mdf" 。
不仅仅是Sql server 2005 express中使用,也可以在其它的文件数据库中使用,例如Sqllite数据库文件的连接字符串:
<add name="DefaultDB"
connectionString="DriverClass=NHibernate.Driver.SQLite20Driver;Dialect=NHibernate.Dialect.SQLiteDialect;Data Source=|DataDirectory|/data.db3" />
不单是 SQL2005 的 EXPRESS 数据库 可以动态的添加到 数据库服务器中 普通的数据库 也可以 放在APP_DATA 文件中 然后程序运行时 动态的添加到数据库 服务器中 连接字符如下:
<add name="SiteDBConnection" connectionString="Data Source=(local);AttachDbFilename=|DataDirectory|/cxy.mdf;Integrated Security=False;uid=ccc;pwd=198583"
providerName="System.Data.SqlClient" />
不能 添加 User Instance=True 属性 除非 数据库 默认让 ASP.NET 用户访问
SQL2005 的 EXPRESS 数据库 连接字符串如下
<add name="SiteDBConnection" connectionString="Data Source=./SQLEXPRESS;AttachDbFilename=|DataDirectory|/SiteDB.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />