明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

通過ADO.NET訪問數(shù)據(jù)庫

[摘要]ADO.NET訪問數(shù)據(jù)庫的步驟不論從語法來看,還是從風(fēng)格和設(shè)計目標(biāo)來看,ADO.NET都和ADO有顯著的不同。在ASP中通過ADO訪問數(shù)據(jù)庫,一般要通過以下四個步驟: 1、 創(chuàng)建一個到數(shù)據(jù)庫的鏈路,...
ADO.NET訪問數(shù)據(jù)庫的步驟
不論從語法來看,還是從風(fēng)格和設(shè)計目標(biāo)來看,ADO.NET都和ADO有顯著的不同。在ASP中通過ADO訪問數(shù)據(jù)庫,一般要通過以下四個步驟:
1、 創(chuàng)建一個到數(shù)據(jù)庫的鏈路,即ADO.Connection;
2、 查詢一個數(shù)據(jù)集合,即執(zhí)行SQL,產(chǎn)生一個Recordset;
3、 對數(shù)據(jù)集合進行需要的操作;
4、 關(guān)閉數(shù)據(jù)鏈路。
在ADO.NET里,這些步驟有很大的變化。ADO.NET的最重要概念之一是DataSet。DataSet是不依賴于數(shù)據(jù)庫的獨立數(shù)據(jù)集合。所謂獨立,就是:即使斷開數(shù)據(jù)鏈路,或者關(guān)閉數(shù)據(jù)庫,DataSet依然是可用的。如果你在ASP里面使用過非連接記錄集合(Connectionless Recordset),那么DataSet就是這種技術(shù)的最徹底的替代品。
有了DataSet,那么,ADO.NET訪問數(shù)據(jù)庫的步驟就相應(yīng)地改變了:
1、 創(chuàng)建一個數(shù)據(jù)庫鏈路;
2、 請求一個記錄集合;
3、 把記錄集合暫存到DataSet;
4、 如果需要,返回第2步;(DataSet可以容納多個數(shù)據(jù)集合)
5、 關(guān)閉數(shù)據(jù)庫鏈路;
6、 在DataSet上作所需要的操作。
DataSet在內(nèi)部是用XML來描述數(shù)據(jù)的。由于XML是一種平臺無關(guān)、語言無關(guān)的數(shù)據(jù)描述語言,而且可以描述復(fù)雜數(shù)據(jù)關(guān)系的數(shù)據(jù),比如父子關(guān)系的數(shù)據(jù),所以DataSet實際上可以容納具有復(fù)雜關(guān)系的數(shù)據(jù),而且不再依賴于數(shù)據(jù)庫鏈路。
ADO.NET對象模型概覽
ADOConnection
ADO.NET有許多對象。我們先看看最基本的也最常用的幾個。首先看看ADOConnection。和ADO的ADODB.Connection對象相對應(yīng),ADOConnection維護一個到數(shù)據(jù)庫的鏈路。為了使用ADO.NET對象,我們需要引入兩個NameSpace:System.Data和System.Data.ADO,使用ASP.NET的Import指令就可以了:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.ADO" %>
和ADO的Connection對象類似,ADOConnection對象也有Open和Close兩個方法。下面的這個例子展示了如何連接到本地的MS SQL Server上的Pubs數(shù)據(jù)庫。
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.ADO" %>
<%
 ''設(shè)置連接串...
 Dim strConnString as String
 strConnString = "Provider=SQLOLEDB; Data Source=(local); " & _
         "Initial Catalog=pubs; User ID=sa"
 ''創(chuàng)建對象ADOConnection
 Dim objConn as ADOConnection
 objConn = New ADOConnection
 ''設(shè)置ADOCOnnection對象的連接串
 objConn.ConnectionString = strConnString
 objConn.Open() ''打開數(shù)據(jù)鏈路
 ''數(shù)據(jù)庫操作代碼省略
 objConn.Close()  ''關(guān)閉數(shù)據(jù)鏈路
 objConn = Nothing ''清除對象
%>
上面的代碼和ADO沒有什么太大的差別。應(yīng)該提到的是,ADO.NET提供了兩種數(shù)據(jù)庫連接方式:ADO方式和SQL方式。這里我們是通過ADO方式連接到數(shù)據(jù)庫。關(guān)于建立數(shù)據(jù)庫連接的詳細(xì)信息,我們在后面的篇幅中將會講到。
ADODatasetCommand
另一個不得不提到的ADO.NET對象是ADODatasetCommand。這個對象專門負(fù)責(zé)創(chuàng)建我們前面提到的DataSet對象。另一個重要的ADO.NET對象是Dataview,它是DataSet的一個視圖。還記得DataSet可以容納各種各種關(guān)系的復(fù)雜數(shù)據(jù)嗎?通過Dataview,我們可以把DataSet的數(shù)據(jù)限制到某個特定的范圍。
下面的代碼展示了如何利用ADODatasetCommand為DataSet填充數(shù)據(jù):
 ''創(chuàng)建SQL字符串
 Dim strSQL as String = "SELECT * FROM authors"
 ''創(chuàng)建對象ADODatasetCommand 和Dataset
 Dim objDSCommand as ADODatasetCommand
 Dim objDataset as Dataset = New Dataset
 objDSCommand = New ADODatasetCommand(strSQL, objConn)
 ''填充數(shù)據(jù)到Dataset
 ''并將數(shù)據(jù)集合命名為 "Author Information"
 objDSCommand.FillDataSet(objDataset, "Author Information")
顯示Dataset
前面我們已經(jīng)把數(shù)據(jù)準(zhǔn)備好。下面我們來看看如何顯示Dataset中的數(shù)據(jù)。在ASP.NET中,顯示DataSet的常用控件是DataGrid,它是ASP.NET中的一個HTML控件,可以很好地表現(xiàn)為一個表格,表格的外觀可以任意控制,甚至可以分頁顯示。這里我們只需要簡單地使用它:
<asp:DataGrid id="DataGridName" runat="server"/>
剩下的任務(wù)就是把Dataset綁定到這個DataGrid。綁定是ASP.NET的重要概念,我們將另文講解。一般來說,你需要把一個Dataview綁定到DataGrid,而不是直接綁定Dataset。好在Dataset有一個缺省的Dataview,下面我們就把它和DataGrid綁定:
  MyFirstDataGrid.DataSource = _
     objDataset.Tables("Author Information").DefaultView
  MyFirstDataGrid.DataBind()
完整的代碼(122301.aspx)
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.ADO" %>
<%
 ''設(shè)置連接串...
 Dim strConnString as String
 strConnString = "Provider=SQLOLEDB; Data Source=(local); " & _
         "Initial Catalog=pubs; User ID=sa"
 ''創(chuàng)建對象ADOConnection
 Dim objConn as ADOConnection
 objConn = New ADOConnection
 ''設(shè)置ADOCOnnection對象的連接串
 objConn.ConnectionString = strConnString
 objConn.Open() ''打開數(shù)據(jù)鏈路
 ''創(chuàng)建SQL字符串
 Dim strSQL as String = "SELECT * FROM authors"
 ''創(chuàng)建對象ADODatasetCommand 和Dataset
 Dim objDSCommand as ADODatasetCommand
 Dim objDataset as Dataset = New Dataset
 objDSCommand = New ADODatasetCommand(strSQL, objConn)
 ''填充數(shù)據(jù)到Dataset
 ''并將數(shù)據(jù)集合命名為 "Author Information"
 objDSCommand.FillDataSet(objDataset, "Author Information")
 objConn.Close()  ''關(guān)閉數(shù)據(jù)鏈路
 objConn = Nothing ''清除對象
 Authors.DataSource = _
     objDataset.Tables("Author Information").DefaultView
 Authors.DataBind()
%>
<HTML>
<BODY>
<asp:DataGrid id="Authors" runat="server"/>
</BODY>
</HTML>