国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

ASP.NET2.0連接SQL Server數(shù)據(jù)庫詳解

2024-08-31 00:43:39
字體:
供稿:網(wǎng)友

  本文將詳細介紹如何使用Connection對象連接數(shù)據(jù)庫。對于不同的.NET數(shù)據(jù)提供者,ADO.NET采用不同的Connection對象連接數(shù)據(jù)庫。這些Connection對象為我們屏蔽了具體的實現(xiàn)細節(jié),并提供了一種統(tǒng)一的實現(xiàn)方法。

  Connection類有四種:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。

  SqlConnection類的對象連接SQL Server數(shù)據(jù)庫;OracleConnection 類的對象連接Oracle數(shù)據(jù)庫;

  OleDbConnection類的對象連接支持OLE DB的數(shù)據(jù)庫,如Access;而OdbcConnection類的對象連接任何支持ODBC的數(shù)據(jù)庫。與數(shù)據(jù)庫的所有通訊最終都是通過Connection對象來完成的。

  SqlConnection類

  Connection 用于與數(shù)據(jù)庫“對話”,并由特定提供程序的類(如 SqlConnection)表示。盡管SqlConnection類是針對Sql Server的,但是這個類的許多屬性、方法與事件和OleDbConnection及OdbcConnection等類相似。本章將重點講解SqlConnection特定的屬性與方法,其他的Connection類你可以參考相應(yīng)的幫助文檔。

  注意:使用不同的Connection對象需要導(dǎo)入不同的命名空間。OleDbConnection的命名空間為System.Data.OleDb。SqlConnection的命名空間為System.Data.SqlClient。OdbcConnection的命名空間為System.Data.Odbc。OracleConnection的命名空間為System.Data.OracleClinet。

  SqlConnection屬性:

 

屬性 說明
ConnectionString 其返回類型為string,獲取或設(shè)置用于打開 SQL Server 數(shù)據(jù)庫的字符串。
ConnectionTimeOut 其返回類型為int,獲取在嘗試建立連接時終止嘗試并生成錯誤之前所等待的時間。
Database 其返回類型為string,獲取當前數(shù)據(jù)庫或連接打開后要使用的數(shù)據(jù)庫的名稱。
DataSource 其返回類型為string,獲取要連接的 SQL Server 實例的名稱。
State 其返回類型為ConnectionState,取得當前的連接狀態(tài):Broken、Closed、Connecting、Fetching或Open。
ServerVersion 其返回類型為string,獲取包含客戶端連接的 SQL Server 實例的版本的字符串。
PacketSize 獲取用來與 SQL Server 的實例通信的網(wǎng)絡(luò)數(shù)據(jù)包的大小(以字節(jié)為單位)。這個屬性只適用于SqlConnection類型

  SqlConnection方法:
 
方法 說明
Close() 其返回類型為void,關(guān)閉與數(shù)據(jù)庫的連接。
CreateCommand() 其返回類型為SqlCommand,創(chuàng)建并返回一個與 SqlConnection 關(guān)聯(lián)的 SqlCommand 對象。
Open() 其返回類型為void,用連接字符串屬性指定的屬性打開數(shù)據(jù)庫連接

  SqlConnection事件:
 
事件 說明
StateChange 當事件狀態(tài)更改時發(fā)生。 (從 DbConnection 繼承。)
InfoMessage 當 SQL Server 返回一個警告或信息性消息時發(fā)生。

  提示:可以用事件讓一個對象以某種方式通知另一對象產(chǎn)生某些事情。例如我們在Windows系統(tǒng)中選擇“開始”菜單,一旦單擊鼠標時,就發(fā)生了一個事件,通知操作系統(tǒng)將“開始”菜單顯示出來。

  使用SqlConnection對象連接SQL Server數(shù)據(jù)庫

  我們可以用SqlConnection()構(gòu)造函數(shù)生成一個新的SqlConnection對象。這個函數(shù)是重載的,即我們可以調(diào)用構(gòu)造函數(shù)的不同版本。SqlConnection()的構(gòu)造函數(shù)如下表所示: 

構(gòu)造函數(shù) 說明
SqlConnection () 初始化 SqlConnection 類的新實例。
SqlConnection (String) 如果給定包含連接字符串的字符串,則初始化 SqlConnection 類的新實例。

   程序代碼說明:在上述語法范例的程序代碼中,我們通過使用“new“關(guān)鍵字生成了一個新的SqlConnection對象,并且將其命名為mySqlConnection。

  現(xiàn)在我們就可以使用如下兩種方式連接數(shù)據(jù)庫,即采用集成的Windows驗證和使用Sql Server身份驗證進行數(shù)據(jù)庫的登錄。

  集成的Windows身份驗證語法范例

string connectionString="server=localhost;database=Northwind;
integrated security=SSPI";


  程序代碼說明:在上述語法范例的程序代碼中,我們設(shè)置了一個針對Sql Server數(shù)據(jù)庫的連接字符串。其中server表示運行Sql Server的計算機名,由于在本書中,ASP.NET程序和數(shù)據(jù)庫系統(tǒng)是位于同一臺計算機的,所以我們可以用localhost取代當前的計算機名。database表示所使用的數(shù)據(jù)庫名,這里設(shè)置為Sql Server自帶的一個示例數(shù)據(jù)庫--Northwind。由于我們希望采用集成的Windows驗證方式,所以設(shè)置 integrated security為SSPI即可。

  Sql Server 2005中的Windows身份驗證模式如下: 

  注意:在使用集成的Windows驗證方式時,并不需要我們輸入用戶名和口令,而是把登錄Windows時輸入的用戶名和口令傳遞到Sql Server。然后Sql Server檢查用戶清單,檢查其是否具有訪問數(shù)據(jù)庫的權(quán)限。而且數(shù)據(jù)庫連接字符串是不區(qū)分大小寫的。

  采用Sql Server身份驗證的語法范例 

string connectionString = "server=localhost;database=Northwind;uid=sa;pwd=sa";


  程序代碼說明:在上述語法范例的程序代碼中,采用了使用已知的用戶名和密碼驗證進行數(shù)據(jù)庫的登錄。uid為指定的數(shù)據(jù)庫用戶名,pwd為指定的用戶口令。為了安全起見,一般不要在代碼中包括用戶名和口令,你可以采用前面的集成的Windows驗證方式或者對Web.Config文件中的連接字符串加密的方式提高程序的安全性。

  Sql Server 2005中的Sql Server身份驗證模式如下:

  如果你使用其他的數(shù)據(jù)提供者的話,所產(chǎn)生的連接字符串也具有相類似的形式。例如我們希望以O(shè)LE DB的方式連接到一個Oracle數(shù)據(jù)庫,其連接字符串如下: 

string connectionString = "data source=localhost;initial catalog=Sales;
use id=sa;password=;provider=MSDAORA";

  程序代碼說明:在上述語法范例的程序代碼中,通過專門針對Oracle數(shù)據(jù)庫的OLE DB提供程序,實現(xiàn)數(shù)據(jù)庫的連接。data source 表示運行Oracle數(shù)據(jù)庫的計算機名,initial catalog表示所使用的數(shù)據(jù)庫名。provider表示使用的OLE DB提供程序為MSDAORA。

  Access數(shù)據(jù)庫的連接字符串的形式如下:
 

string connectionString = "provider=Microsoft.Jet.OLEDB.4.0;
@”data source=c:/DataSource/Northwind.mdb”;

  程序代碼說明:在上述語法范例的程序代碼中,通過專門針對Access數(shù)據(jù)庫的OLE DB提供程序,實現(xiàn)數(shù)據(jù)庫的連接。這使用的的OLE DB提供程序為Microsoft.Jet.OLEDB.4.0,并且數(shù)據(jù)庫存放在c:/DataSource目錄下,其數(shù)據(jù)庫文件為Northwind.mdb。

  現(xiàn)在我們就可以將數(shù)據(jù)庫連接字符串傳人SqlConnection()構(gòu)造函數(shù),例如:
 

string connectionString = "server=localhost;database=Northwind;uid=sa;pwd=sa";
SqlConnection mySqlConnection = new SqlConnection(connectionString);

  或者寫成
 

SqlConnection mySqlConnection =new SqlConnection(
"server=localhost;database=Northwind;uid=sa;pwd=sa");

  在前面的范例中,通過使用“new“關(guān)鍵字生成了一個新的SqlConnection對象。因此我們也可以設(shè)置該對象的ConnectionString屬性,為其指定一個數(shù)據(jù)庫連接字符串。這和將數(shù)據(jù)庫連接字符串傳人SqlConnection()構(gòu)造函數(shù)的功能是一樣的。 

SqlConnection mySqlConnection = new SqlConnection();
mySqlConnection.ConnectionString = "server=localhost;database=Northwind;uid=sa;pwd=sa";

  注意:只能在關(guān)閉Connection對象時設(shè)置ConnectionString屬性。

  打開和關(guān)閉數(shù)據(jù)庫連接

  生成Connection對象并將其設(shè)置ConnectionString屬性設(shè)置為數(shù)據(jù)庫連接的相應(yīng)細節(jié)之后,就可以打開數(shù)據(jù)庫連接。為此可以調(diào)用Connection對象的Open()方法。其方法如下:
 

mySqlConnection.Open();

  完成數(shù)據(jù)庫的連接之后,我們可以調(diào)用Connection對象的Close()方法關(guān)閉數(shù)據(jù)庫連接。例如:
 

mySqlConnection.Close();

  下面是一個顯示如何用SqlConnection對象連接Sql Server Northwind數(shù)據(jù)庫的實例程序,并且顯示該SqlConnection對象的一些屬性。

  范例程序代碼如下: 

01 public partial class _Default : System.Web.UI.Page
02 {
03 protected void Page_Load(object sender, EventArgs e)
04 {
05 //建立數(shù)據(jù)庫連接字符串
06 string connectionString = "server=localhost;database=Northwind;
07 integrated security=SSPI";
08 //將連接字符串傳入SqlConnection對象的構(gòu)造函數(shù)中
09 SqlConnection mySqlConnection = new SqlConnection(connectionString);
10 try
11 {
12 //打開連接
13 mySqlConnection.Open();
14 //利用label控件顯示mySqlConnection對象的ConnectionString屬性
15 lblInfo.Text = "<b>mySqlConnection對象的ConnectionString屬性為:<b>" +
16 mySqlConnection.ConnectionString + "<br>";
17 lblInfo.Text += "<b>mySqlConnection對象的ConnectionTimeout屬性為<b>" +
18 mySqlConnection.ConnectionTimeout + "<br>";
19 lblInfo.Text += "<b>mySqlConnection對象的Database屬性為<b>" +
20 mySqlConnection.Database + "<br>";
21 lblInfo.Text += "<b>mySqlConnection對象的DataSource屬性為<b>" +
22 mySqlConnection.DataSource + "<br>";
23 lblInfo.Text += "<b>mySqlConnection對象的PacketSize屬性為<b>" +
24 mySqlConnection.PacketSize + "<br>";
25 lblInfo.Text += "<b>mySqlConnection對象的ServerVersion屬性為<b>" +
26 mySqlConnection.ServerVersion + "<br>";
27 lblInfo.Text += "<b>mySqlConnection對象的當前狀態(tài)為<b>" +
28 mySqlConnection.State + "<br>";
29 }
30 catch (Exception err)
31 {
32 lblInfo.Text = "讀取數(shù)據(jù)庫出錯";
33 lblInfo.Text += err.Message;
34 }
35 finally
36 {
37 //關(guān)閉與數(shù)據(jù)庫的連接
38 mySqlConnection.Close();
39 lblInfo.Text += "<br><b>關(guān)閉連接后的mySqlConnection對象的狀態(tài)為:</b>";
40 lblInfo.Text += mySqlConnection.State.ToString();
41 }
42 }
43 }

  程序代碼說明:在上述范例的程序代碼中,我們利用try catch finally對數(shù)據(jù)庫連接進行異常處理。當無法連接數(shù)據(jù)庫時將拋出異常,并顯示出錯信息,見catch代碼塊所示。在此程序中,無論是否發(fā)生異常,都可以通過finally區(qū)塊關(guān)閉數(shù)據(jù)庫的連接,從而節(jié)省計算機資源,提高了程序的效率和可擴展性。

  執(zhí)行結(jié)果: 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 高州市| 临夏市| 西城区| 古丈县| 甘南县| 东兴市| 高碑店市| 闽侯县| 名山县| 玉田县| 江都市| 方城县| 中江县| 无棣县| 保亭| 正定县| 新疆| 利川市| 芦溪县| 外汇| 阿克苏市| 杨浦区| 鹤山市| 巴楚县| 佳木斯市| 深圳市| 蒲江县| 得荣县| 丰原市| 安多县| 东兰县| 南昌县| 启东市| 宣化县| 拉萨市| 闽侯县| 白城市| 丰城市| 彭泽县| 方正县| 乡宁县|