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 和密码。
三、AttachDBFilename
SqlConnectionStringBuilder的AttachDBFilename属性,对应connectionString中的AttachDBFilename,“AttachDBFilename”可以写成“extended properties”,“initial file name”。AttachDbFileName属性指定连接打开的时候动态附加到服务器上的数据库文件的位置。这个属性可以接受数据库的完整路径和相对路径(例如使用|DataDirectory|语法),在运行时这个路径会被应用程序的App_Data目录所代替。
有一篇文章,专门解释DataDirectory是什么。
四、User Instance
SqlConnectionStringBuilder的UserInstance属性,对应connectionString中的User Instance ,该值指示是否将连接从默认的 SQL Server Express 实例重定向到在调用方帐户之下运行并且在运行时启动的实例。UserInstance=true,在这种情况下,SQLServerExpress为了把数据库附加到新的实例,建立一个新的进程,在打开连接的用户身份下运行。在ASP.NET应用程序中,这个用户是本地的ASPNET帐号或默认的NetworkService,这依赖于操作系统。为了安全地附加非系统管理员帐号(例如ASP.NET帐号)提供的数据库文件,建立一个独立的SQLServer用户实例是必要的。
附录:
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数据库文件的连接字符串:
sqlserver 2008 的连接字符串和sql2005的几乎是一样的,但是,他们对于其中的一些配置要求不同。我试着用了很多连接字符串,最后找到了问题的原因,特别记录到这里,如果有相同问题的同学,可以参考。
准备工作:必须确保SQL Server(SQLEXPRESS)服务已经启动。
正文:
// windows验证方式
string connectionStringTest1 = @"Data Source=BL48VQ68YDRNQMN\SQLEXPRESS;Initial Catalog=PrimarySchool;Integrated Security=SSPI; ";
//建立信任连接(具体含义与同其他方式的区别还需学习)
string connectionStringTest2 = @"server=BL48VQ68YDRNQMN\SQLEXPRESS;Initial Catalog=PrimarySchool;Integrated Security=True";
//网站连接数据库的标准方式
string connectionStringTest3 = @"server=BL48VQ68YDRNQMN\SQLEXPRESS;database=PrimarySchool;user id=admin;password=123456";
//应用程序连接数据库的标准方式
string connectionStringTest4 = @"Data Source = BL48VQ68YDRNQMN\SQLEXPRESS; Initial Catalog = tempdb; User Id = admin; Password = 123456;";
连接、断开、释放资源的语句如下
SqlConnection conn = new SqlConnection(connectionStringTest5);
try
{
conn.Open();
}
catch (Exception e)
{
string message = e.Message;
}
finally
{
conn.Close();
conn.Dispose();
}
注意事项:与sqlserver2005不同,连接字符串当中的数据源(server、Data Source)必须是机器名,如果写的是IP地址如:127.0.0.1,那么会抛异常的。
#数据库连接字符串集合
(一)常用连接:
1.使用SqlConnection对象:
a. Sql 验证
public void SqlConnectionOpen()
{
SqlConnection conn= new SqlConnection();
conn.ConnectionString = "user id=sa;password=;initial catalog=northwind;datasource=localhost;connect Timeout=20";
conn.Open();
}
b. Windows 身份验证
public void SqlConnectionOpen()
{
SqlConnection conn= new SqlConnection();
conn.ConnectionString = "Integrated Security=SSPI;initial catalog=northwind;datasource=localhost;connect Timeout=20";
conn.Open();
}
2.使用OleDbConnection对象:
public void OleDBConnectionOpen()
{
OleDBConnection conn = new OleDbconnection();
conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\Customer.mdb";
conn.Open();
}
(二)其它:
1.ODBC连接Access本地数据库
conGoodDay.Open("Driver={Microsoft Access Driver(*.mdb)};"+"Dbq=C:\a.mdb;"+
"Uid=Admin;"+"Pwd=;");
2.ODBC连接Access系统数据库
conGoodDay.Open("Driver={Microsoft Access Driver(*.mdb)};"+"Dbq=C:\a.mdb;"+
"SystemDB=Admin;"+"Pwd=;");
3.ODBC连接Access系统数据库
conGoodDay.Open("Driver={Microsoft Access Driver(*.mdb)};"+"Dbq=\\server\share\a.mdb;");
4.ODBC连接Excel系统数据库
conGoodDay.Open("Driver={Microsoft Access Driver(*.xls)};"+"DriverId=790;"+
"Dbq=C:\a.xls;"+"DefaultDir=c:\somepath;");
5.ODBC连接Oracle系统数据库
conGoodDay.Open("Driver={Microsoft ODBC for oracle};"+"Server=OracleServer.world;"+
"Uid=Admin;"+"Pwd=password;");
6.ODBC连接Sql Servr
conGoodDay.Open("Driver={Sql Server};"+"Server=myServer;"+"Database=myDatabaseName;"
"Uid=Admin;"+"Pwd=password;");
7.ODBC连接Visual FoxPro
conGoodDay.Open("Driver={Microsoft Visual FoxPro Driver};"+
"SourceType=DBC;"+"SourceDB=c:a.dbc;"+"Exclusive=No;");
Windows 身份验证
建议使用 Windows 身份验证(有时也称为“集成安全性”)连接到支持其的数据源。连接字符串中使用的语法根据提供程序的不同而不同。下表演示用于 .NET Framework 数据提供程序的 Windows 身份验证语法。
提供程序
语法
SqlClient
Integrated Security=true;
-- or --
Integrated Security=SSPI;
OleDb
Integrated Security=SSPI;
Odbc
Trusted_Connection=yes;
OracleClient
Integrated Security=yes;
Integrated Security=true 用于 OleDb 提供程序时会引发异常。