SqlConnectionStringBuilder實(shí)例化時(shí)需要使用connectionString。如:SqlConnectionStringBuild builder = new SqlConnectionStringBuild(connectionString);
一、Data Source
SqlConnectionStringBuilder的DataSource屬性,對應(yīng)connectionString中的Data Source,“Data Source”可以由下列字符串代替:“Server”,“Address”,“Addr”和“Network Address”。
Data Source=.\SQLExpress也可以寫成這樣Data Source=(local)\SQLExpress。
二、Integrated Security
SqlConnectionStringBuilder 的 IntegratedSecurity 屬性,對應(yīng) connectionString 中的I ntegrated Security,“Integrated Security”可以寫成“trusted_connection”。
為 True 時(shí),使用當(dāng)前的 Windows 帳戶憑據(jù)進(jìn)行身份驗(yàn)證,為 False 時(shí),需要在連接中指定用戶 ID 和密碼??勺R(shí)別的值為 True、False、Yes、No 以及與 True 等效的 SSPI。
如果沒有些則必須寫上 uid=sa;pwd=123 之類的設(shè)置“uid”也可使用“User ID”,“pwd”也可換為“PassWord”。
SSPI:Microsoft安全支持提供器接口(SSPI)是定義得較全面的公用API,用來獲得驗(yàn)證、信息完整性、信息隱私等集成安全服務(wù),以及用于所有分布式應(yīng)用程序協(xié)議的安全方面的服務(wù)。
應(yīng)用程序協(xié)議設(shè)計(jì)者能夠利用該接口獲得不同的安全性服務(wù)而不必修改協(xié)議本身。
三、AttachDBFilename
SqlConnectionStringBuilder 的 AttachDBFilename 屬性,對應(yīng) connectionString 中的 AttachDBFilename,“AttachDBFilename”可以寫成“extended properties”,“initial file name”。
AttachDbFileName 屬性指定連接打開的時(shí)候動(dòng)態(tài)附加到服務(wù)器上的數(shù)據(jù)庫文件的位置。
這個(gè)屬性可以接受數(shù)據(jù)庫的完整路徑和相對路徑(例如使用|DataDirectory|語法),在運(yùn)行時(shí)這個(gè)路徑會(huì)被應(yīng)用程序的 App_Data 目錄所代替。
四、User Instance
SqlConnectionStringBuilder 的 UserInstance 屬性,對應(yīng) connectionString 中的 User Instance ,該值指示是否將連接從默認(rèn)的 SQL Server 實(shí)例重定向到在調(diào)用方帳戶之下運(yùn)行并且在運(yùn)行時(shí)啟動(dòng)的實(shí)例。
UserInstance=true 時(shí),SQLServerExpress 為了把數(shù)據(jù)庫附加到新的實(shí)例,建立一個(gè)新的進(jìn)程,在打開連接的用戶身份下運(yùn)行。
在 ASP.NET 應(yīng)用程序中,這個(gè)用戶是本地的 ASPNET 賬號(hào)或默認(rèn)的 NetworkService,這依賴于操作系統(tǒng)。
為了安全地附加非系統(tǒng)管理員賬號(hào)(例如ASP.NET賬號(hào))提供的數(shù)據(jù)庫文件,建立一個(gè)獨(dú)立的 SQLServer 用戶實(shí)例是必要的。
五、Initial Catalog 等同于 Database。
六、providerName 指定值“System.Data.OracleClient”,該值指定 ASP.NET 在使用此連接字符串進(jìn)行連接時(shí)應(yīng)使用 ADO.NET System.Data.OracleClient 提供程序。
PS:
DataDirectory是什么?
asp.net 2.0有一個(gè)特殊目錄app_data,通常Sql Server 2005 express數(shù)據(jù)文件就放在這個(gè)目錄,相應(yīng)的數(shù)據(jù)庫連接串就是:
connectionString="…… data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|data.mdf;User Instance=true"
這里有一個(gè)DataDirectory的宏,它表示什么意義呢?
DataDirectory是表示數(shù)據(jù)庫路徑的替換字符串。由于無需對完整路徑進(jìn)行硬編碼,DataDirectory 簡化了項(xiàng)目的共享和應(yīng)用程序的部署。例如,無需使用以下連接字符串:
"Data Source= c:\program files\MyApp\app_data\Mydb.mdf"
通過使用|DataDirectory|(包含在如下所示的豎線中),即可具有以下連接字符串:
"Data Source = |DataDirectory|\Mydb.mdf" 。
不僅僅是Sql server 2005 express中使用,也可以在其它的文件數(shù)據(jù)庫中使用,例如Sqllite數(shù)據(jù)庫文件的連接字符串:
<add name="DefaultDB"
connectionString="DriverClass=NHibernate.Driver.SQLite20Driver;Dialect=NHibernate.Dialect.SQLiteDialect;Data Source=|DataDirectory|\data.db3" />
--------------------------------------- 附加一些連接語句例子 ---------------------------------------
<--普通例子1-->
<configuration>
<connectionStrings>
<add name="Sales" providerName="System.Data.SqlClient" connectionString="server=myserver;database=Products;uid=salesUser;pwd=sellMoreProducts" />
<add name="NorthWind" providerName="System.Data.SqlClient" connectionString="server=.;database=NorthWind;Integrated Security=SSPI" />
</connectionStrings>
</configuration>
<--普通例子2-->
<configuration>
<connectionStrings>
<add name="NorthWind" connectionString="Provider=SQLOLEDB;Integrated Security=SSPI;Initial Catalog=da;Data Source=bar" />
</configuration>
----------------------------------------------------------------------------------------------------------
<connectionStrings>
<add name="LocalSqlServer" connectionString="Data Source=.\SQLExpress;Initial Catalog=NorthWind;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
</connectionStrings>
<--也可寫為-->
<connectionStrings>
<add name="LocalSqlServer" connectionString="Server=.\SQLExpress;Database=NorthWind;Integrated Security=Yes" providerName="System.Data.SqlClient" />
</connectionStrings>
----------------------------------------------------------------------------------------------------------
<configuration>
<connectionStrings>
<add name="DB2005_2"
providerName="System.Data.SqlClient"
connectionString="Data Source=.;Initial Catalog=Northwind;User ID=dbtester;Password=zhi;Trusted_Connection=False;Connect Timeout=30;Min Pool Size=16;Max Pool Size=100"/>
<add name="DB2005_1"
providerName="System.Data.SqlClient"
connectionString="Server=.;Database=Northwind;User ID=dbtester;Password=zhi;Trusted_Connection=False;Connect Timeout=30;Min Pool Size=16;Max Pool Size=100"/>
<add name="Northword2000"
providerName="System.Data.SqlClient"
connectionString="Initial Catalog=Northwind;User ID=dbtester;PassWord=zhi;Persist Security Info=false;Data Source=(local);Connect Timeout=30;Min Pool Size=16;Max Pool Size=100;"/>
<add name="SQLExp"
providerName="System.Data.SqlClient"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\northwnd1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"/>
<add name="Oracle"
connectionString="Data Source=TEST;User ID=sa;Password=sa;"
providerName="System.Data.OracleClient" />
<add name="oleconn"
providerName="System.Data.OleDb"
connectionString="Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|northwind.mdb"/>
<add name="MySql"
providerName="MySql.Data.MySqlClient"
connectionString="Server=172.29.131.27;Port=3311;DataBase=comctl;Persist Security Info=False;User ID=root;Password=123456;Allow Zero Datetime=true;" />
</connectionStrings>
<system.data>
<DbProviderFactories>
<add name="MySQL Data Provider"
invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.2.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</DbProviderFactories>
</system.data>
</configuration>
====================================== 可以保存為(以下轉(zhuǎn)自他處).cs ======================================
using System.Data.SqlClient;
using System.Configuration;
public class Class1
{
public Class1()
{
//Persist Security Info如果數(shù)據(jù)庫連接成功后不再需要連接的密碼,建議False
//string sql2000 = "Initial Catalog=Northwind;User ID=dbtester;PassWord=zhi;Persist Security Info=false;Data Source=(local);Connect Timeout=30;Min Pool Size=16;Max Pool Size=100;";
//string sql2000 = "Initial Catalog=Northwind;User ID=sa;PassWord=5;Persist Security Info=false;Data Source=.";
//string sql2000 = "Initial Catalog=Northwind;User ID=sa;PassWord=5;Persist Security Info=false;Data Source=newtime";
string source = "server=(local);integrated security=SSPI;database=Northwind";
string expressSource = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\northwnd.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
//Integrated Security采用windows的集成身份驗(yàn)證,integraged Security=SSPI;
//Integrated Security=SSPI 這個(gè)表示以當(dāng)前WINDOWS系統(tǒng)用戶身去登錄SQL SERVER服務(wù)器,如果SQL SERVER服務(wù)器不支持這種方式登錄時(shí),就會(huì)出錯(cuò)
//表示你的連接安全驗(yàn)證方式,可用trusted_connection=yes取代
//Integrated Security 為 True。用戶實(shí)例僅與集成安全性一起使用,帶有用戶名和密碼的 SQL Server 用戶不起作用。
//string source3 = @"Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog= pubs;UserID=sa;Password=asdasd;";
//(DBMSSOCN=TCP/IP instead of Named Pipes, at the end of the Data Source is the port to use (1433 is the default))
//Standard Security:
string source4 = "Data Source=Aron1;Initial Catalog= pubs;UserId=sa;Password=asdasd;";
string source5 = "Server=Aron1;Database=pubs;UserID=sa;Password=asdasd;Trusted_Connection=False";
//Trusted_Connection 'false' 當(dāng)為 false 時(shí),將在連接中指定用戶 ID 和密碼。當(dāng)為 true 時(shí),將使用當(dāng)前的 Windows 帳戶憑據(jù)進(jìn)行身份驗(yàn)證。
//可識(shí)別的值為 true、false、yes、no 以及與 true 等效的 sspi(強(qiáng)烈推薦)。所以一定要設(shè)置Trusted_Connection= false,以防被別人"登錄"、"注入語句"等
string source6 = "Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;";
string source7 = "Server=Aron1;Database=pubs;Trusted_Connection=True;";
//(use serverName\instanceName as Data Source to use an specifik SQLServer instance, only SQLServer2000)
//Integrated Security或Trusted_Connection 'false' 當(dāng)為 false 時(shí),
//將在連接中指定用戶 ID 和密碼。當(dāng)為 true 時(shí),將使用當(dāng)前的 Windows 帳戶憑據(jù)進(jìn)行身份驗(yàn)證
//VS2003:string connStr=System.Configuration.ConfigurationSettings.AppSettings["SQLCONNECTIONSTRING"];2003中用的
//VS2005:string connStr=System.Configuration.ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ToString();2005-8中用
System.Configuration.ConnectionStringSettings i = System.Configuration.ConfigurationManager.ConnectionStrings["Northword2000"];
}
}
聯(lián)系客服