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

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数据库文件的连接字符串:

<add  name="DefaultDB" 
connectionString="DriverClass=NHibernate.Driver.SQLite20Driver;Dialect=NHibernate.Dialect.SQLiteDialect;Data  Source=|DataDirectory|\data.db3" />

 

2.连接数据库服务器

<!--连接数据库服务器-->
  <add key="CRMonnection" value="Data Source=Sufei;Initial Catalog=CRM;Integrated Security=false;uid=1233;Password=123456"></add>

一般是这样写的,意思 我就不在多说了大家一看就知道了。

 

3.怎么样取呢来看个例子吧

先看下面的代码

 


<appSettings>
    
<!--连接数据库服务器-->
        
<add key="CRMonnection" value="Data Source=Sufei;Initial Catalog=CRM;Integrated Security=false;uid=nouter;Password=123456"></add>
        
<add key="ForumName" value="漯河移动"/>
    
<!--连接数据库文件-->
    
<add key ="CRMConnectionString" value ="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|CRM.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"/>
    
</appSettings>

Connect Timeout

- 或 -

Connection Timeout

默认值:15

在终止尝试并产生错误之前,等待与服务器的连接的时间长度(以秒为单位)。

 

取的方法在这里

 System.Configuration.ConfigurationSettings.AppSettings["CRMConnectionString"];
 
详细请参见MSDN:SqlConnection类的ConnectionString 属性
 
 

可以使用以下的连接字符串来连接到名为MyLocalData.mdf的本地数据库:

<%#Eval("Title")%>Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|MyLocalData.mdf;
Integrated Security=True;User Instance=True

连接到MyLocalData.mdf文件时,数据库会自动附加在Microsoft SQL Server Express中。

 

连接字符串有一个名为AttachDbFilename的参数。这个参数表示数据库文件的物理路径(.mdf文件)。要注意路径中使用的|DataDirectory|关键字,这个关键字表示站点的App_Data文件夹。

 

可以使用完整的数据库文件物理路径来代替|DataDirectory|关键字。使用|DataDirectory|关键字的好处是,在改变应用程序位置时不用再修改连接字符串。

注意,连接字符串中也包含的User Instance参数。创建User Instance连接可以在不使用系统管理员账号的情况下连接本地数据库。因为ASPNET账号不是管理员账号,所以使用这个参数就可以在ASP.NET页面中使用本地数据库。

 

连接字符串中包含User Instance参数会造成在用户的安全上下文中创建不同的SQL Server用户实例。当用户使用User Instance关键字,在第一次创建连接时,系统数据库的副本就会复制到用户的应用程序数据文件夹,此文件夹的路径是:

C:\Documents and Settings\[Username]\Local Settings\Application Data\
Microsoft\Microsoft SQL Server Data\SQLEXPRESS
 
注解 使用微软Vista时,SQL Express系统数据库的路径为:
C:\Users\[Username]\AppData\Local\Micro- 
soft\Microsoft SQL Server Data\SQLEXPRESS

 

每一个登录用户都会有一份系统数据库的副本。

注解 默认情况下,当页面在IIS中执行时,这个页面就在ASPNET或Network Service账户的安全上下文中执行。当页面在Visual Web Developer的Web服务器端中执行时,这个页面就在当前登录用户的安全上下文中执行。

 

使用本地数据库而不是服务器端数据库的好处之一是,本地数据库可以方便地改变位置。如果你使用电子邮件将一个本地数据库文件(App_Data文件夹中的.mdf文件)发送给朋友,他立即就可以使用这个数据库。唯一的前提是需要你朋友的计算机已经安装了SQL Server Express。

 

本书中所有的示例都使用本地数据库,你只要将配套资源中的数据库文件(.mdf文件)复制到你需要的硬盘位置就可以使用示例数据库了。

转自:http://book.51cto.com/art/200904/119157.htm

posted @ 2010-02-23 20:22  唔愛吃蘋果  阅读(1460)  评论(0编辑  收藏  举报