一ADONET访问数据库的步骤不论从语法来看还是从风格和设计目标来看ADONET都和ADO有显着的不同在ASP中通过ADO访问数据库一般要通过以下四个步骤
创建一个到数据库的链路即ADOConnection
查询一个数据集合即执行SQL产生一个Recordset
对数据集合进行需要的操作
关闭数据链路
在ADONET里这些步骤有很大的变化ADONET的最重要概念之一是DataSetDataSet是不依赖于数据库的独立数据集合所谓独立就是即使断开数据链路或者关闭数据库DataSet 依然是可用的如果你在ASP里面使用过非连接记录集合(Connectionless Recordset)那么DataSet就是这种技术的最彻底的替代品
有了DataSet那么ADONET访问数据库的步骤就相应地改变了
创建一个数据库链路
请求一个记录集合
把记录集合暂存到DataSet
如果需要返回第步(DataSet可以容纳多个数据集合)
关闭数据库链路
在DataSet上作所需要的操作
DataSet在内部是用XML来描述数据的由于XML是一种平台无关语言无关的数据描述语言而且可以描述复杂数据关系的数据比如父子关系的数据所以DataSet实际上可以容纳具有复杂关系的数据而且不再依赖于数据库链路
二ADONET对象模型概览
1ADOConnection
ADONET有许多对象我们先看看最基本的也最常用的几个首先看看ADOConnection和ADO的ADODBConnection对象相对应ADOConnection维护一个到数据库的链路为了使用ADONET 对象我们需要引入两个NameSpaceSystemData和SystemDataADO使用ASPNET的Import指令就可以了
<%@ Import Namespace=SystemData %>
<%@ Import Namespace=SystemDataADO %>
和ADO的Connection对象类似ADOConnection对象也有Open和Close两个方法下面的这个例子展示了如何连接到本地的MS SQL Server上的Pubs数据库
<%@ Import Namespace=SystemData %>
<%@ Import Namespace=SystemDataADO %>
<%
设置连接串
Dim strConnString as String
strConnString = Provider=SQLOLEDB; Data Source=(local); & _
Initial Catalog=pubs; User ID=sa
创建对象ADOConnection
Dim objConn as ADOConnection
objConn = New ADOConnection
设置ADOCOnnection对象的连接串
objConnConnectionString = strConnString
objConnOpen()打开数据链路
数据库操作代码省略
objConnClose()关闭数据链路
objConn = Nothing清除对象
%>
上面的代码和ADO没有什么太大的差别应该提到的是ADONET提供了两种数据库连接方式ADO方式和SQL方式这里我们是通过ADO方式连接到数据库
2ADODatasetCommand
另一个不得不提到的ADONET对象是ADODatasetCommand这个对象专门负责创建我们前面提到的DataSet对象另一个重要的ADONET对象是Dataview它是DataSet的一个视图还记得DataSet可以容纳各种各种关系的复杂数据吗?通过Dataview我们可以把DataSet的数据限制到某个特定的范围
(1)下面的代码展示了如何利用ADODatasetCommand为DataSet填充数据
创建SQL字符串
Dim strSQL as String = SELECT * FROM authors
创建对象ADODatasetCommand 和Dataset
Dim objDSCommand as ADODatasetCommand
Dim objDataset as Dataset = New Dataset
objDSCommand = New ADODatasetCommand(strSQL objConn)
填充数据到Dataset
并将数据集合命名为 Author Information
objDSCommandFillDataSet(objDataset Author Information)
(2)显示Dataset
前面我们已经把数据准备好下面我们来看看如何显示Dataset中的数据在ASPNET中显示DataSet的常用控件是DataGrid它是ASPNET中的一个HTML控件可以很好地表现为一个表格表格的外观可以任意控制甚至可以分页显示这里我们只需要简单地使用它
<asp:DataGrid id=DataGridName runat=server/>
剩下的任务就是把Dataset绑定到这个DataGrid绑定是ASPNET的重要概念一般来说你需要把一个Dataview绑定到DataGrid而不是直接绑定Dataset好在Dataset有一个缺省的Dataview下面我们就把它和DataGrid绑定
MyFirstDataGridDataSource = _
objDatasetTables(Author Information)DefaultView
MyFirstDataGridDataBind()
完整的代码(aspx)
<%@ Import Namespace=SystemData %>
<%@ Import Namespace=SystemDataADO %>
<%
设置连接串
Dim strConnString as String
strConnString = Provider=SQLOLEDB; Data Source=(local); & _
Initial Catalog=pubs; User ID=sa
创建对象ADOConnection
Dim objConn as ADOConnection
objConn = New ADOConnection
设置ADOCOnnection对象的连接串
objConnConnectionString = strConnString
objConnOpen()打开数据链路
创建SQL字符串
Dim strSQL as String = SELECT * FROM authors
创建对象ADODatasetCommand 和Dataset
Dim objDSCommand as ADODatasetCommand
Dim objDataset as Dataset = New Dataset
objDSCommand = New ADODatasetCommand(strSQL objConn)
填充数据到Dataset
并将数据集合命名为 Author Information
objDSCommandFillDataSet(objDataset Author Information)
objConnClose()关闭数据链路
objConn = Nothing清除对象
AuthorsDataSource = _
objDatasetTables(Author Information)DefaultView
AuthorsDataBind()
%>
<HTML>
<BODY>
<asp:DataGrid id=Authors runat=server/>
</BODY>
</HTML>