妩妩资讯网

ASP.NET数据库编程

2020-05-23 03:14:00

  ASP.NET中的ADO.NET和ASP中的ADO相对应,它是ADO的改进版本。在ADO.NET中,通过Managed Provider所提供的应用程序编程接口(API),可以轻松地访问各种数据源的数据,包括OLEDB所支持的和ODBC支持的。

  下面介绍ADO.NET中最重要的两个概念:Managed Provider和DataSet。

  Managed Provider

  过去,通过ADO的数据存取采用了两层的基于连接的编程模型。随着多层应用的需求不断增加,程序员需要一个无连接的模型。ADO.NET就应运而生了。ADO.NET的Managed Provider就是一个多层结构的无连接的一致的编程模型。

  Managed Provider提供了DataSet和数据中心(如MS SQL)之间的联系。Managed Provider包含了存取数据中心()的一系列接口。主要有三个部件:

  1、连接对象Connection、命令对象Command、参数对象Parameter提供了数据源和DataSet之间的接口。DataSetCommand接口定义了数据列和表映射,并最终取回一个DataSet。

  2、数据流提供了高性能的、前向的数据存取机制。通过IdataReader,你可以轻松而高效地访问数据流。

  3、更底层的对象允许你连接到,然后执行系统一级的特定命令。

  过去,数据处理主要依赖于两层结构,并且是基于连接的。连接断开,数据就不能再存取。现在,数据处理被延伸到三层以上的结构,相应地,程序员需要切换到无连接的应用模型。这样,DataSetCommand就在ADO.NET中扮演了极其重要的角色。它可以取回一个DataSet,并维护一个数据源和DataSet之间的"桥",以便于数据访问和修改、保存。DataSetCommand自动将数据的各种操作变换到数据源相关的合适的SQL语句。从图上可以看出,四个Command对象:SelectCommand、InsertCommand、UpdateCommand、DeleteCommand分别代替了的查询、插入、更新、删除操作。

  Managed Provider利用本地的OLEDB通过COM Interop来实现数据存取。OLEDB支持自动的和手动的事务处理。所以,Managed Provider也提供了事务处理的能力。   DataSet

  DataSet是ADO.NET的中心概念。你可以把DataSet想象成内存中的。正是由于DataSet,才使得程序员在编程序时可以屏蔽之间的差异,从而获得一致的编程模型。

  DataSet支持多表、表间关系、数据约束等等。这些和关系的模型基本一致。

  通过ADO.NET访问

  不论从语法来看,还是从风格和设计目标来看,ADO.NET都和ADO有显著的不同。在ASP中通过ADO访问,一般要通过以下四个步骤:

  1、 创建一个到的链路,即ADO.Connection;

  2、 查询一个数据集合,即执行SQL,产生一个Recordset;

  3、 对数据集合进行需要的操作;

  4、 关闭数据链路。

  在ADO.NET里,这些步骤有很大的变化。ADO.NET的最重要概念之一是DataSet。DataSet是不依赖于的独立数据集合。所谓独立,就是:即使断开数据链路,或者关闭,DataSet依然是可用的。如果你在ASP里面使用过非连接记录集合(Connectionless Recordset),那么DataSet就是这种技术的最彻底的替代品。有了DataSet,那么,ADO.NET访问的步骤就相应地改变了:

  1、创建一个链路;

  2、请求一个记录集合;

  3、把记录集合暂存到DataSet;

  4、如果需要,返回第2步;(DataSet可以容纳多个数据集合)

  5、关闭链路;

  6、在DataSet上作所需要的操作。

  DataSet在内部是用XML来描述数据的。由于XML是一种平台无关、语言无关的数据描述语言,而且可以描述复杂数据关系的数据,比如父子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不再依赖于链路。

  ADO.NET有许多对象,我们先看看最基本的也最常用的几个。首先看看ADOConnection。和ADO的ADODB.Connection对象相对应,ADOConnection维护一个到的链路。为了使用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。

<%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.ADO" %> <%'设置连接串...Dim strConnString as StringstrConnString = "Provider=SQLOLEDB; Data Source=(local); " & _"Initial Catalog=pubs; User ID=sa"

'创建对象ADOConnectionDim objConn as ADOConnectionobjConn = New ADOConnection

'设置ADOCOnnection对象的连接串objConn.ConnectionString = strConnString

objConn.Open() '打开数据链路

'操作代码省略

objConn.Close() '关闭数据链路objConn = Nothing '清除对象%> 

上面的代码和ADO没有什么太大的差别。应该提到的是,ADO.NET提供了两种连接方式:ADO方式和SQL方式。这里我们是通过ADO方式连接到。关于建立连接的详细信息,我们在后面的篇幅中将会讲到。

  ADODatasetCommand

  另一个不得不提到的ADO.NET对象是ADODatasetCommand,这个对象专门负责创建我们前面提到的DataSet对象。另一个重要的ADO.NET对象是Dataview,它是DataSet的一个视图。还记得DataSet可以容纳各种各种关系的复杂数据吗?通过Dataview,我们可以把DataSet的数据限制到某个特定的范围。

  下面的代码展示了如何利用ADODatasetCommand为DataSet填充数据:

'创建SQL字符串Dim strSQL as String = "SELECT * FROM authors"

'创建对象ADODatasetCommand 和Dataset Dim objDSCommand as ADODatasetCommandDim objDataset as Dataset = New DatasetobjDSCommand = New ADODatasetCommand(strSQL, objConn)

'填充数据到Dataset'并将数据集合命名为 "Author Information"objDSCommand.FillDataSet(objDataset, "Author Information")

  显示Dataset

  前面我们已经把数据准备好。下面我们来看看如何显示Dataset中的数据。在ASP.NET中,显示DataSet的常用是DataGrid,它是ASP.NET中的一个HTML,可以很好地表现为一个表格,表格的外观可以任意控制,甚至可以分页显示。这里我们只需要简单地使用它:

  <asp:DataGrid id="DataGridName" runat="server"/> 

  剩下的任务就是把Dataset绑定到这个DataGrid,绑定是ASP.NET的重要概念,我们将另文讲解。一般来说,你需要把一个Dataview绑定到DataGrid,而不是直接绑定Dataset。好在Dataset有一个缺省的Dataview,下面我们就把它和DataGrid绑定:MyFirstDataGrid.DataSource = _objDataset.Tables("Author Information").DefaultViewMyFirstDataGrid.DataBind()

  Dataset的用法   Dataset 并不是Recordset的简单翻版。从一定的意义上来说,DataView更类似于Recordset。如果说DataReader是访问数据的最容易的方式,那么Dataset则是最完整的数据访问对象。通过Dataset,你可以操作已有的数据,还可以通过程序创建Dataset,加入Table到Dataset,并建立这些Table之间的关系。

  使用Dataset的几个步骤

  第1步,创建到数据源的连接:

   SQLConnection con =new SQLConnection("server=localhost;uid=sa;pwd=;database=pubs");

  第2步,创建DataSetCommand对象,指定一个的名字或者一个SQL语句,指定数据链路;

   SQLDataSetCommand cmd =new SQLDataSetCommand("SELECT * FROM Authors", con);

  第3步,创建一个Dataset对象

   DataSet ds = new DataSet();

  第4步,调用DataSetCommand的FillData方法,为Dataset填充数据。注意:数据链路没有必要是打开的。如果数据链路是关闭状态,FillData函数会打开它,并在FillData之后关闭数据链路。如果数据链路本来就是打开的,在FillData之后,数据链路依然保持打开状态。

   int iRowCount = cmd.FillDataSet(ds, "Authors");

  第5步,操作数据。由于FillData返回了记录的个数,我们可以构造一个循环,来操纵Dataset中的数据。

for(int i=0; i< iRowCount; i++){DataRow dr = ds.Tables[0].Rows[i];Console.WriteLine(dr["au_lname"]);}

  数据绑定技术

  Repeater、DataList 、DataGrid是System.Web.UI.WebControls名空间(Namespace)里几个相关的页面。这些把绑定到它们的数据通过HTML表现出来,它们又被成为"列表绑定"(list-bound controls)。

  和其他Web一样,这些不仅提供了一个一致的编程模型,而且封装了与版本相关的HTML逻辑。这种特点使得程序员可以针对这个对象模型编程,而无须考虑各种版本的差别和不一致性。

  这三个具有把它们的相关数据"翻译"成各种外观的能力。这些外观包括表格、多列列表、或者任何的HTML流。同时,它们也允许你创建任意的显示效果。除此之外,它们还封装了处理提交数据、状态管理、事件激发的功能。最后,它们还提供了各种级别的标准操作,包括选择、编辑、分页、排序等等。利用这些,你可以轻松地完成如下的Web应用:报表、购物推车、产品列表、查询结果显示、导航菜单等等。

推荐
·office2007_设置下拉菜单的方法
·小米运动蓝牙耳机怎么用?小米运动蓝牙耳机使用方法
·锁屏也能背单词!单词锁屏带你进入学霸模式
·屏幕视频录制软件WM Capture安装破解教程
·太极越狱工具越狱失败怎么办?太极越狱工具失败解决方法
·新浪微博仅自己可见设置教程
·16年经典播放器重生!精简、强大得不像话
·贷款之家审核要多久?贷款之家审核速度快吗?
·高通案接近尾声:国产手机厂商或掀起专利内战
·相册飞船怎么上传手机照片视频 相册飞船上传手机照片视频教...
排行榜
·ASP.NET数据库编程
·苹果iPad Air 2下月发售 明年将推大屏iPad
·新浪微博仅自己可见设置教程
·推盟宝推广软件注册新用户账号教程
·阿里巴巴将造汽车 与上汽合作
·16年经典播放器重生!精简、强大得不像话
·贷款之家审核要多久?贷款之家审核速度快吗?
·微软将推商用语音软件 让电脑会听也会对话
·高通案接近尾声:国产手机厂商或掀起专利内战
·相册飞船怎么上传手机照片视频 相册飞船上传手机照片视频教程
图片
智能电视卡顿怎么办 电视盒子卡顿怎么解决
QQ如何设置代理IP上网
关于我们   |   联系我们  |  本站导航   |   网站留言   |   本站招聘