C#串連SQL Server資料庫
對於不同的.NET資料提供者,ADO.NET採用不同的Connection對象串連資料庫。這些Connection對象為我們屏蔽了具體的實現細節,並提供了一種統一的實現方法。
Connection類有四種:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。
SqlConnection類的對象串連SQL Server資料庫;OracleConnection 類的對象串連Oracle資料庫;OleDbConnection類的對象串連支援OLE DB的資料庫,如Access;而OdbcConnection類的對象串連任何支援ODBC的資料庫。與資料庫的所有通訊最終都是通過Connection對象來完成的。
(1)用SqlConnection串連SQL Server
加入命名空間:using System.Data.SqlClient;
串連資料庫: string conString = "data source=IP地址; Database=資料庫名;user id=使用者名稱; password=密碼";
SqlConnection myconnection = new SqlConnection(conString);
myconnection.open();
(2)用OracleConnection串連Oracle
加入命名空間:using System.Data.OracleClient;
串連資料庫: string conString = "data source=IP地址; Database=資料庫名;user id=使用者名稱; password=密碼";
OracleConnection myconnection = new OracleConnection(conString);
myconnection.open();
(3)用 MySqlConnection串連MySQL
在.NET中串連MySQL資料庫有兩種方法:MySQL Connector/ODBC 和 MySQL Connector/NET,ODBC連接器是符合ODBC標準的互動平台,是.NET訪問MySQL資料庫最好的選擇。
首先,需要下載安裝MySql-connector-net-5.1.5.Data.msi這個組件。如果是預設安裝,則可以在C:\Program Files\MySQL\MySQL Connector Net 5.1.5\Binaries\.NET2.0中找到MySql.Data.dll,將該檔案複製到項目的bin目錄下。並且在項目中添加引用MySql.Data.dll。實現代碼如下:
加入命名空間:using MySql.Data.MySqlClient;
串連資料庫: string conString = "server=IP地址; Database=資料庫名;user id=使用者名稱; password=密碼";
MySqlConnection myconnection = new MySqlConnection(conString);
myconnection.open();
(4)用OleDbConnection串連各種資料來源
由於資料來源不同,相應的連接字串也會不同。
加入命名空間:using System.Data.OleDb;
串連 SQL Server: string conString = "Provider=SQLOLEDB.1; Persist Security Info=False; user id=使用者名稱; Database=資料庫名; data source=COMPUTER; ";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
串連 Access: string conString = "Provider=Microsoft.Jet.OLEDB.4.0; data source=C:\\Database1.mdb; Persist Security Info=False;";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
(也可以通過建立.udl檔案來獲得字串)
串連 Oracle: string conString = "Provider=MSDAORA; user id=使用者名稱; password=密碼; data source=db; Persist Security Info=False;";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
(也可以通過OracleConnection串連)
注意:使用不同的Connection對象需要匯入不同的命名空間。OleDbConnection的命名空間為System.Data.OleDb。SqlConnection的命名空間為System.Data.SqlClient。OracleConnection的命名空間為System.Data.OracleClinet。
我們就可以使用如下兩種方式串連資料庫,即採用整合的Windows驗證和使用Sql Server身分識別驗證進行資料庫的登入。
1、整合的Windows身分識別驗證文法範例
string constr = "server=.;database=myschool;integrated security=SSPI";
說明:程式碼中,設定了一個針對Sql Server資料庫的連接字串。其中server表示運行Sql Server的電腦名稱,由於程式和資料庫系統是位於同一台電腦的,所以我們可以用.(或localhost)取代當前的電腦名稱。database表示所使用的資料庫名(myschool)。由於我們希望採用整合的Windows驗證方式,所以設定 integrated security為SSPI即可。
2、Sql Server 2005中的Windows身分識別驗證模式如下:
string constr = "server=.;database=myschool;uid=sa;pwd=sa";
說明:程式碼中,採用了使用已知的使用者名稱和密碼驗證進行資料庫的登入。資料庫連接字串是不區分大小寫。uid為指定的資料庫使用者名稱,pwd為指定的使用者口令。為了安全起見,一般不要在代碼中包括使用者名稱和口令,你可以採用前面的整合的Windows驗證方式或者對Web.Config檔案中的連接字串加密的方式提高程式的安全性。
3、Sql Server 2005中的Sql Server身分識別驗證模式如下:
string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa";
說明:程式碼中data source 表示運行資料庫對應的電腦名稱,initial catalog表示所使用的資料庫名。uid為指定的資料庫使用者名稱,pwd為指定的使用者口令。
4、Access資料庫的連接字串的形式如下:
string connectionString =@"provider=Microsoft.Jet.OLEDB.4.0;data source=c:\DataSource\myschool.mdb";
說明:程式碼中,通過專門針對Access資料庫的OLE DB提供者,實現資料庫的串連。這使用的的OLE DB提供者為Microsoft.Jet.OLEDB.4.0,並且資料庫存放在c:\DataSource目錄下,其資料庫檔案為myschool.mdb。
string constr = "server=.;database=myschool;integrated security=SSPI";
//string constr = "server=.;database=myschool;uid=sa;pwd=sa";
//string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa";
SqlConnection con = new SqlConnection(constr);
// con.ConnectionString = constr;
string sql = "select count(*) from grade";
SqlCommand com = new SqlCommand(sql,con);
try
{
con.Open();
MessageBox.Show("成功串連資料庫");
int x = (int)com.ExecuteScalar();
MessageBox.Show(string.Format("成功讀取{0},條記錄", x));
}
catch (Exception)
{
throw;
}
finally
{
con.Close();
MessageBox.Show("成功關閉資料庫連接", "提示資訊", MessageBoxButtons.YesNoCancel);
}
5、Web.config 配置
在ASP.NET 2.0中,使用了一種在運行時解析為連接字串值的新的聲明性運算式文法,按名稱引用資料庫連接字串。連接字串本身儲存在 Web.config 檔案中的 <connectionStrings>配置節下面,以便易於在單個位置為應用程式中的所有頁進行維護。
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="myschool" connectionString="Server=localhost;Integrated Security=True;Database=myschool;Persist Security Info=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<pages styleSheetTheme="Default"/>
</system.web>
</configuration>
我們也可以用下面的方式從設定檔直接讀取資料庫連接字串。首先我們需要引用using System.Web.Configuration命名空間,該命名空間包含用於設定 ASP.NET 配置的類。string connectionString =ConfigurationManager.ConnectionStrings["myschool"].ConnectionString;
首先你應該區分Windows驗證與Sql自身的驗證的區別。
Windows驗證就是SqlServer伺服器使用Windows內建的驗證系統,如果你指定SqlServer內Windows的一個組有訪問的許可權,那麼加入此組的Windows使用者都有訪問資料庫的許可權。此驗證有個缺點,就是如果不是在域模式下,無法加入遠端電腦的使用者,所以如果使用C/S方式寫程式的話,使用Windows驗證無法使本機電腦的Windows帳戶訪問遠端資料庫伺服器。
Sql驗證就簡單多了,就是使用sqlserver的企業管理器中自己定義由Sql控制的使用者,指定使用者權限等。這個帳戶資訊是由SqlServer自己維護的,所以SqlServer更換電腦後資訊不會丟失,不用重新設定。
所以如果你的項目使用在一個比較大的網路中,而且對安全要求比較高,那麼應該建立域,使用Windows驗證,而且要與系統管理員配合詳細設定可以訪問SqlServer的Windows帳戶。如果使用一個小網路,而且此網路僅用來使用項目,對安全沒有高要求,那麼使用SqlServer驗證,而且更新��升級等都方便。
Windows驗證與SQL Server驗證的資料庫聯結字串是不同的。
本文永久更新連結地址: