近日正在看Asp.NET,看到Web.config有很不清楚之處,特意從網(wǎng)絡(luò)、MSDN搜集、歸納和整理,供大家分享。
在ASP.NET的web.config中,可以用兩種方式來(lái)寫連接字符串的配置。
<configuration> <appSettings> <add key="connstr1" value="Data Source=.;Initial Catalog=DBName;Integrated Security=true"/> <add key="connstr2" value="........."> </appSettings> <connectionStrings> <add name="connstr3" connectionString="........" /> <add name="connstr4" connectionString="......" providerName="System.Data.Sqlclient" </connectionStrings></configuration>
如上代碼所示:兩種方式為appSettings和connectionStrings
appSettings:
①它是asp.net1.1的時(shí)候用的,在vs2003中用的
②里面存的相當(dāng)于鍵值對(duì)的形式,key和value。不僅僅可以存連接字符串,還可以存儲(chǔ)一些配置項(xiàng)。其中value中包括數(shù)據(jù)庫(kù)服務(wù)器地址、用戶名和密碼、數(shù)據(jù)庫(kù)名稱等信息。
③在appSettings中,不能使用ProviderName="System.Data......."(不過(guò)如果你要用也可以,只要寫在value里面就可以了,當(dāng)成值傳遞過(guò)去)
④在后臺(tái)取值方式用代碼:
string conn=System.Configuration.ConfigurationManager.AppSettings["connstr";]
connectionStrings:
①它是asp.net2.0中新增的。
②里面存的也類似于鍵值對(duì)的形式,使用的是name和connectionString,一般就存連接字符串。
③在connectionStrings中可以,可以使用providerName.
④在后臺(tái)代碼,取值的方式:
string conn=System.Configuration.ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;其它說(shuō)明: ①Initial Catalog=Database就是數(shù)據(jù)庫(kù)名稱,根據(jù)從網(wǎng)絡(luò)上搜集到的信息看,兩者好像可以完全通用,基本沒(méi)有區(qū)別。 ② Integrated Security集成安全選項(xiàng)設(shè)置,可識(shí)別的值為 true、false、yes、no以及與true等效的sspi。當(dāng)為 false 時(shí),將在連接中指定用戶ID和密碼。當(dāng)為true時(shí),將使用當(dāng)前的Windows 帳戶憑據(jù)進(jìn)行身份驗(yàn)證。其中SSPI為Security Supoort Provider Interface即安全支持提供者接口,Microsoft安全支持提供器接口(SSPI)是定義得較全面的公用API,用來(lái)獲得驗(yàn)證、信息完整性、信息隱私等集成安全服務(wù),以及用于所有分布式應(yīng)用程序協(xié)議的安全方面的服務(wù)。應(yīng)用程序協(xié)議設(shè)計(jì)者能夠利用該接口獲得不同的安全性服務(wù)而不必修改協(xié)議本身。SQL Server 數(shù)據(jù)庫(kù)連接字符串中,Integrated Security=SSPI 表示使用 Windows 身份驗(yàn)證,即使用運(yùn)行當(dāng)前應(yīng)用程序的用戶來(lái)連接 SQL Server,對(duì)網(wǎng)頁(yè)來(lái)說(shuō),一般是 IIS 中的匿名用戶。 既然connectionStrings是2.0版本出來(lái)的,那它肯定比appsettings有好處了:
網(wǎng)上如是說(shuō):
① 可將連接字符串加密,使用MS的一個(gè)加密工具即可。
② 可直接邦定的數(shù)據(jù)源控件,而不必寫代碼讀出來(lái)再賦值給控件。
③ 可方便的更換數(shù)據(jù)庫(kù)平臺(tái),如換為Oracle數(shù)據(jù)庫(kù),只需修改providerName providerName它的作用是什么呢?
我們先看一下providerName的參數(shù)值。
①providerName="System.Data.SqlClient" ----說(shuō)明使用的是MSSQLServer數(shù)據(jù)庫(kù)②providerName="System.Data.SqlLite" ----說(shuō)明使用的是SQLLite數(shù)據(jù)庫(kù)③providerName="System.Data.OracleClient" ----說(shuō)明使用的是Oracle數(shù)據(jù)庫(kù)或providerName="System.Data.Oracle.DataAccess.Client" ----同上④providerName="System.Data.OleDb" ----說(shuō)明使用的是Access數(shù)據(jù)庫(kù)
providerName可寫可不寫。
我們什么時(shí)候用providerName呢?
比如,我們現(xiàn)在要做一個(gè)項(xiàng)目,以后會(huì)賣個(gè)兩個(gè)企業(yè)使用:A和B。這就有不確定因素了,A使用Oracle,B使用SQLserver。
所以,
①數(shù)據(jù)庫(kù):我們需要建兩個(gè)庫(kù),一個(gè)用oracle,一個(gè)用Sqlserver。
②程序:我們一般不去寫兩個(gè)系統(tǒng)讓他們使用,我們肯定會(huì)去判斷,先判斷他們使用的是什么數(shù)據(jù)庫(kù),然后再在程序里執(zhí)行什么樣的數(shù)據(jù)庫(kù)腳本。
③web.config代碼:
<configuration> <connectionStrings> <add name="connStr" connectionString="Data Source=.;Initial Catalog=mydb;Integrated Security=true" providerName="System.Data.SqlClient"/> </connectionStrings></configuration> ④程序代碼:進(jìn)行判斷,如果providerName="System.Data.SqlClient"則執(zhí)行SQLServer的腳本,如果providerName="System.Data.OracleClient"則調(diào)用Oracle的數(shù)據(jù)庫(kù)腳本。
public static readonly string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ProviderName;public static string databaseType = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ProviderName;public static int ExecuteNonQuery(CommandType commandType, string commandText, params System.Data.OleDb.OleDbParameter[] parm){ int num = 0; if (databaseType == "System.Data.SqlClient") { //此處執(zhí)行Microsoft SQLServer的數(shù)據(jù)庫(kù)腳本 } else if (databaseType == "System.Data.OracleClient") { //此處執(zhí)行Oracle的數(shù)據(jù)庫(kù)腳本 } return num;}常見(jiàn)的數(shù)據(jù)庫(kù)連接代碼(C#):SqlConnection conn = new SqlConnection( “Server=(local);Integrated Security=SSPI;database=Pubs“);SqlConnection conn = new SqlConnection(“server=(local)\NetSDK;database=pubs;Integrated Security=SSPI“);SqlConnection conn = new SqlConnection(“Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;“);SqlConnection conn = new SqlConnection(“ data source=(local);initial catalog=xr;integrated security=SSPI;persist security info=False;workstation id=XURUI;packet size=4096; “);SqlConnection myConn = new System.Data.SqlClient.SqlConnection(“Persist Security Info=False;IntegratedSecurity=SSPI;database=northwind;server=mySQLServer“);SqlConnection conn = new SqlConnection( “ uid=sa;pwd=passwords;initial catalog=pubs;data source=127.0.0.1;Connect Timeout=900“);
相關(guān):web.config配置文件詳解
關(guān)于asp.net網(wǎng)站管理工具安全選項(xiàng)無(wú)法連接到Sql server數(shù)據(jù)庫(kù)