失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C#-Home / 详解Asp.Net Sql数据库连接字符串

C#-Home / 详解Asp.Net Sql数据库连接字符串

时间:2018-09-27 19:42:32

相关推荐

C#-Home / 详解Asp.Net Sql数据库连接字符串

C#-Home / 详解 Sql数据库连接字符串

-04-18 22:00 281人阅读 评论(0) 收藏 举报

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为了把数据库附加到新的实例,建立一个新的进程,在打开连接的用户身份下运行。在应用程序中,这个用户是本地的ASPNET帐号或默认的NetworkService,这依赖于操作系统。为了安全地附加非系统管理员帐号(例如帐号)提供的数据库文件,建立一个独立的SQLServer用户实例是必要的。

附录:

DataDirectory是什么?

2.0有一个特殊目录app_data,通常Sql server 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 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.怎么样取呢来看个例子吧

先看下面的代码

错误提示:

说明:执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息:System.Data.SqlClient.SqlException: 此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭。

原因:

<connectionStrings>

<add name="ExporttoExcel" connectionString="Data Source=090297878a\SQL08;AttachDbFilename=|DataDirectory|\Exporting.mdf;Integrated Security=True;User Instance=True"/>

</connectionStrings>

中的红色部分User Instance=True;只有SQL Server Express版的支持 自己的是Microsoft SQL Server Enterprise Evaluation Edition 不支持

解决方法:

方法1:在连接属性的设置里边,点高级,将User Instance 设置为false,默认的true(我在中没有找到相应的选项,使用的是第二种方法)

方法2:更改WEB.CONFIG中的连接字符串中的User Instance 为false即可。

Code

<appSettings>

<!--连接数据库服务器-->

<addkey="CRMonnection"value="DataSource=Sufei;InitialCatalog=CRM;IntegratedSecurity=false;uid=nouter;Password=123456"></add>

<addkey="ForumName"value="漯河移动"/>

<!--连接数据库文件-->

<addkey="CRMConnectionString"value="DataSource=./SQLEXPRESS;AttachDbFilename=|DataDirectory|CRM.mdf;IntegratedSecurity=True;ConnectTimeout=30;UserInstance=True"/>

</appSettings>

取的方法在这里

System.Configuration.ConfigurationSettings.AppSettings["CRMConnectionString"];

如果觉得《C#-Home / 详解Asp.Net Sql数据库连接字符串》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。