详解Asp.Net Sql数据库连接字符串

本文详细介绍了SQL连接字符串的构成及各个参数的意义,包括DataSource、IntegratedSecurity等,并提供了多种连接方式的示例,如Windows身份验证和SQL Server身份验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1 . 连接数据库文件

< add name = " LocalSqlServer "  connectionString = " Data Source=.\SQLExpress;Integrated Security=True;
AttachDBFilename=|DataDirectory|TimeTracker.mdf;User Instance=true "   />



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 提供程序时会引发异常。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值