转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
Delphi7下仿Ado.Net类的实现         ★★★★

Delphi7下仿Ado.Net类的实现

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1887 更新时间:2009/4/23 10:50:45

Delphi7下仿Ado.Net类的实现

kaneboy@163.net

 

 

最近正在学.Net,发现.Net下的Ado.Net数据组件(方式和理念都)比Ado要先进很多,天生可以用于MultiTier环境,通过继承DataSet,能很方便创建可以在各层(主要是DataAccess层和BusinessRule层)间传递的实体对象,而且断开式的连接方式,可以很大的节省数据库服务器连接资源,同时在客户端又可以方便的处理存于对象中的数据。

 

由于一直是在使用Delphi,感觉很多以前在Delphi下感觉束缚的方法,通过Ado.Net,可以非常方便的解决,于是想到其实可以通过模仿Ado.Net的运作,在Delphi下自己来部分实现的。

 

下面对各单元和各类做简单讲解,不包含类中所有的公开接口,请参看源码。

 

一、DataColumn单元

实现了TDataColumn类、TDataColumnCollection类、TDataColumnState类、TDataColumnCollectionState类。

 

TDataColumn用来保存数据表中一列的信息(包括数据),ColumnName属性公开列名(自定义的,不同于数据库中的物理字段名),FieldName属性公开数据库中的字段名,DataType属性公开字段的数据类型,OriginValue、OldValue、CurrentValue属性分别公开此列的初始值(从数据库中取出数据时的值)、旧值和当前值,Value属性直接返回CurrentValue,这些属性都返回Variant类型的值,为了方便使用,AsString、AsDataTime、AsInteger和其他类似的属性直接返回对应类型的值。

 

TDataColumnCollection是集合类,继承自TObjectList,用来保存多个TDataColumn对象,重载了Add,Insert方法以实现类型检查。

 

TDataColumnState是一个枚举类,用来表示一个TDataColumn的状态,分别有csUnKnown, csUnChanged, csModified,用来表示未知、未改变、已改变三种状态。

 

TDataColumnCollectionState也是枚举类,用来表示一个TDataColumnCollection的状态,分别有ccsUnknown, ccsUnChanged, ccsModified。

 

二、DataRow单元

实现了TDataRow类、TDataRowCollection类、TDataRowState类。

 

TDataRow用来保存数据表中的一行数据,Columns属性是一个TDataColumnCollection类型的值,返回了这行中包含的所有列。

 

TDataRowCollection是集合类,用来维护多个TDataRow对象。

 

TDataRowState枚举类用来表示一个数据行的状态,有rsUnknown, rsUnChanged, rsNew, rsModified, rsDeleted。

 

三、DataCommand单元和DataCommandParameter单元

由于TAdoCommand未能符合要求,所以对其进行继承,以扩充其特性。

这两个单元实现TDataCommand类、TDataCommandParameter类、TDataCommandParameterCollection类、TDataCommandParameterType类。

 

TDataCommandParameter类用来表示一个TDataCommand的参数,这个参数信息用来辅助TDataCommand的CommandText实现各种操作。DataType属性公开参数表示的数据列的数据类型,FieldName属性公开物理数据库中的字段名,Name属性公开参数名,ParamType属性是一个TDataCommandParameterType枚举类型的值,可以是ptUpdateField或ptWhereField,表示参数是一个更新值还是定位值。

 

TDataCommandParameterCollection是集合类,表示多个TDataCommandParameter对象。

 

TDataCommand继承自TAdoCommand,DataParameters属性公开一个TDataCommandParameterCollection类型的值,表示一个参数集合。

 

四、DataTable单元

实现了TDataTable和TDataTableCollection类。

 

TDataTable表示一个数据表,Columns属性公开表的列集合,Rows属性公开表的行集合,NewRow()用来新增一个属于本表的TDataRow,并返回之,TableName属性返回表名,BindTo()方法可以直接把这个TDataTable绑定到一个TStringGrid控件,另外一个重载的BindTo()把一列的数据绑定到一个TStringList上。

 

TDataTableCollection是一个表示多个表的集合类。

 

五、DataSetPlus单元

实现了TDataSetPlus类。(为什么不直接用TDataSet这个名字呢?因为Delphi中已经自己用了:)

 

TDataSetPlus表示一个数据集,可以包含多个数据表,Tables属性公开其包含的TDataTable对象,NewTable()方法新增一个属于自身的数据表。

 

六、DataAdapter单元

实现TDataAdapter类,用来连接TDataSetPlus和数据库。

 

TDataAdapter类,可以填充或更新一个数据集,SelectCommand、InsertCommand、UpdateCommand、DeleteCommand属性分别公开四个TDataCommand类型的值,用来进行取数据、插入数据、更新数据、删除数据的操作,Fill()方法可以根据SelectCommand中的CommandText把相应的数据填充进参数中的TDataSetPlus对象中,Update()方法可以根据InsertCommand、UpdateCommand、DeleteCommand把参数中的TDataSetPlus对象更新回数据库。

 

 

 

最后,我们就可以这样使用了:

 

var

       ds : TDataSetPlus;

    ada : TDataAdapter;

    cmdSelect, cmdInsert, cmdUpdate, cmdDelete : TDataCommand;

    conn : TAdoConnection;

    i : Integer;

begin

       // 定义数据库连接

       conn := TAdoConnection.Create(nil);

    conn.ConnectionString := ''''FILE NAME=.\ado+.udl'''';

    conn.LoginPrompt := False;

 

       // 下面分别定义四个TDataCommand,用于Select, Insert, Update, Delete

    cmdSelect := TDataCommand.Create(nil);

    cmdSelect.Connection := conn;

    cmdSelect.CommandText := ''''select username,password from userdb'''';

 

    cmdInsert := TDataCommand.Create(nil);

    cmdInsert.Connection := conn;

    cmdInsert.CommandText := ''''insert into userdb (username, password) values

[1] [2]  下一页


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台