C#-Home / 详解Asp.Net Sql数据库连接字符串
C#-Home / 詳解Asp.Net Sql數據庫連接字符串
2010-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為了把數據庫附加到新的實例,建立一個新的進程,在打開連接的用戶身份下運行。在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.怎么樣取呢來看個例子吧
先看下面的代碼
?
?
?
錯誤提示:
說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息: System.Data.SqlClient.SqlException: 此版本的 SQL Server 不支持用戶實例登錄標志。該連接將關閉。
原因:
<connectionStrings>
?
<add name="ExporttoExcel" connectionString="Data Source=2005090297878a\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>
????<!--連接數據庫服務器-->
????????<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>
取的方法在這里
System.Configuration.ConfigurationSettings.AppSettings["CRMConnectionString"];轉載于:https://www.cnblogs.com/gzhnan/articles/2822730.html
總結
以上是生活随笔為你收集整理的C#-Home / 详解Asp.Net Sql数据库连接字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajax判断用户名是否已经存在
- 下一篇: 线程间通信的三种方法 (转)