posts - 9,  comments - 0,  trackbacks - 0
    ADO.NET提供了三个类:DBConnection, DBCommand 和 DBDataReader,它们与传统的ADO对象十分的相似。但是在.NET应用程序中它们不能被直接使用。能够使用的是从它们继承而来的类,比如ADOConnection, ADOCommand 和 ADODataReader来读取数据,这里的前提是存在一个OLEDB的Provider。如果要操作的对象是SQL Server,那么将使用另一些功能相同的类SQLConnection, SQLCommand 和 SQLDataReader 以便直接通过SQL Server 的 TDS 连接通道来获得更好的工作性能。下面是一个例子(因为在这里C#和VB.NET的代码区别不是很大,所以将只使用VB.NET的实例):
     
Imports System.Data
Imports System.Data.ADO
..
Dim cn As New ADOConnection()
cn.ConnectionString = strConnect

Try
   cn.Open()
   Dim cd As New ADOCommand(搒elect * from authors? cn)
   Dim dr As ADODataReader
   cd.Execute(dr)
   While dr.Read()
     listbox1.Items.Add(dr(揳u_lname?)
   End While
Catch err As Exception
   MsgBox(err.ToString)
Finally
   If cn.State = DBObjectState.Open Then cn.Close()
End Try

    在上面你会发现在While Loop语句中没有出现MoveNext方法,因为DataReader的Read方法将自动前移光标,并会在没有数据的时候返回一个False值。这显然减轻了开发者的工作量。

    在两种情况下,DataReader被推荐使用:一、客户界面利用手写代码,或是没有用到数据绑定并且数据的更新是利用手写的SQL语句或是存储过程,这种情况下,DataReader将提供有效的访问相关数据的方法;二、一个需要查看数据库状态的的过程,但不需要实现诸如自动更新的功能。一些比较好的应用实例有向下拉菜单填充数据,以及产品编号的验证。

理解DataSets
    
    对于一些开发者来说,可能会对DataSets的使用颇有微词,但事实上,掌握它并不难。如果你对连接断开的RecordSet 模式,以及分层的RecordSet 的使用不陌生,并且乐于使用一些XML的话,那么利用DataSets 就没有什么困难了。

    可是有什么必要去花费时间去重新学习一种对象模型呢?
    理由之一是,ADO.NET 力推的断开连接模式(disconnected model)是非常有意义的。断开连接的数据伸缩性更高,因为这种模式对数据服务器的压力比较小。通过平行服务器对中间层进行扩展比对数据层进行扩展要容易的多,因此对于可扩展的应用程序来说,对数据层资源的使用要谨慎。断开连接模式将在这里得到应用。
    理由二,在数据管理方面,断开连接模式有非常广阔的前景。

    如果说有一种技术的 发展比ADO还要迅速,这就是XML。XML解决了两个ADO所对的局限。
    1、XML更加适用与跨平台的的数据传输,因为它能够穿越防火墙。
    2、XML比ADO包括它的扩展ADO2.5描述的类型多。一个简单的例子,同样面对扁平的数据,普通的XML将比ADO显示出更高的效率。

    DataSets是XML与ADO结合的产物,它的一个重要的特点是与数据库或SQL无关。它只是简单的对数据表进行操作,交换数据或是将数据绑定到用户界面上。

    向DataSets中加入数据表的方法有两种:
    1、利用DataSetCommand对象,它可以以XML 的形式返回一个数据库查询的结果。在处理数据库更新的时候,这种方法与ADO的客户端光标基本相同,但提供更强的控制。
    2、直接对XML数据进行操作。DataSet 对象有对XML数据和Schemas进行读写的的方法,并且可以和XMLDataDocument对象(该对象是多用途XMLDocument类的继承)紧密的结合起来工作,它具有一些对扁平数据操作的特殊函数因此可以作为从DataSet 到通用XML DOM的桥梁。

    下面是一段使用DataSet的代码:
Dim dc As New ADODataSetCommand( _
   "select au_id, au_fname, au_lname from authors" & _
   " where au_lname = ‘Ringer’", strConnect)
Dim ds As New DataSet()

dc.FillDataSet(ds, "Authors")
MsgBox(ds.XmlSchema, , "XML Schema")
MsgBox(ds.XmlData, , "XML Data")

    
以上的代码将一个‘AUTHORS’数据表填充到DataSet 对象实例 ds 中,并显示了XML数据和Schemas,请看两个显示结果:表1 和 表2

     向DataSet中添加数据表的操作是非常容易的,请看下面的代码:

dc = New ADODataSetCommand( _
   "select * from titleauthor" & _
   " where title_id like 'PS%'", strConnect)

dc.FillDataSet(ds, "Titles")
MsgBox(ds.XmlData, , "XML Data")
 



表1显示XML Schema




表2显示DataSet 对象生成的数据

    

posted on 2006-11-23 23:00 MT'S BLOG 阅读(370) 评论(0)  编辑 收藏 引用 所属分类: 参考文
只有注册用户登录后才能发表评论。

<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜