分享
 
 
 

Delphi数据库编程教程(三)

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

第三节 ADO(ActiveX Data Objects)编程模型

如文章“Delphi中引入ADO”所叙述的,ADO是一套COM(Component Object Model组件对象模型)组件(DLLs),它允许你像访问电子邮件和文件系统一样访问数据库。使用ADO编写的应用程序不需要BDE。为了用ADO访问各种数据库,你需要有ADO/OLE DB(Object Linking and Embedding对象链接和嵌入)库。使用ADO所需要的可能在你的计算机中已存在:这些文件被微软作为Windows98/2000的一部分分发。如果你使用的是Windows95或NT,你可能需要分发或安装ADO引擎。Delphi 5的CD中包含有MDAC-Microsoft Data access Components(微软数据访问组件)的安装文件。你应该确定使用的是MDAC的最新版本,它可以从微软的官方网站获得。MDAC是使Universal Data Access(通用数据访问)起作用的关键技术。它们包括ActiveX Data Objects(ADO)、OLE DB和Open Database Connectivity(ODBC)。

注:为了在Windows95的计算机上正确安装,MDAC需要DCOM95(Distributed Component Object Model分布式组件对象模型)已被安装。为了正确的注册,MDAC所安装的组件依赖于DCOM95所安装的DLLs。注意,DCOM95在NT4.0中是不需要的。在某些情况下,DCOM不需要安装在运行Windows的计算机中。但如果没有被安装,安装MDAC前应安装DCOM98。

没有必要过多的讨论OLE DB和ADO,让我们转移到更实际的问题上。

ADO 对象(ADO Objects)

ADO编程模型围绕着几个ADO对象而建立,这些对象为访问各种数据员提供多种方法。这些对象提供连接数据源、查询和更新记录集、报告错误的功能。Delphi通过几个VCL组件通过访问这些对象的封装组件。让我们看一下与ADO工作的对象是那些:

Connection (连接)对象,通过连接字符串与数据源连接。在BDE/Delphi中,连接对象是数据库组件和会话(session)组件的结合。

Command (命令)对象,使我们能操作数据源。它描绘一个命令(也视为查询或叙述),能处理对数据库数据的增加、删除、查询或更新。

Recordset (记录集)对象,是查询(Query)命令的结果。你可以认为Recordset 是一个Delphi表(Table)组件或查询(Query)组件。Recordset 返回的每一行都包含多个字段(Field)对象。

其他几个在ADO模型中存在的对象有:字段(Field)对象、参数(Parameter)对象和错误(Error)对象—在接下来的章节中将会回过来谈到它们。

第四节 用ADOExPRess连接数据库

在对ADOExpress集合的每个组件进行简要的解释之前,让我们首先了解一下怎样连接到Access数据库。当然,当然我们将连接到我们的样例数据库—AboutDelphi.mdb(译者加:在上一章中所建立的数据库)。

Delphi(5)主要通过组件面板ADO页上的ADOExpress组件实现对ADO的支持。几个其他的数据库使能组件在本课程中将被使用。目前,我们将主要关注用ADO访问Access数据库所需的最小的组件集。

运行Delphi,建立一个新的带有空的表单的应用程序。

为了能通过ADO和Delphi访问Access数据库的数据,你必须在你的工程中至少增加三个数据可视(data aware)组件。首先是数据控制(DataControls)组件页的DBGrid—用于浏览从一个表格或通过查询获得的记录。其次是DataSource(DataAccess数据访问页),用于连接数据集和表单上的DBGrid组件,从而实现潜在数据集数据的现实、导航(navigation)和编辑。最后是ADOTable(ADO页),它描绘从ADO数据库获得的一个表。把它们都拖放在表单(Form)上,组件名都取默认值。这时表单应如图所示:

如果你现在运行程序,Grid中没有数据显示—当然,因为我们没有真正地连到数据库上。注意另一点:仅仅Grid使可见的,其他两个组件是不可视控件(controls-unvisible)。

组件间的连接(Link between components)

为了显示数据库中的数据,我们必须把三个组件连在一起。在对象监视器(Object Inspector)中进行如下设置:

DBGrid1.DataSource = DataSource1;

DataSource1.DataSet = ADOTable1 ;

现在我们到了比较难的部分了,为了真正从数据库中获得数据,我们必须建立一个连接字符串(ConnectionString)。这个字符串指出了数据库的物理存储位置和访问方式。当你双击AdoTable组件的ConnectionString(连接字符串)属性的省略号按钮,你将得到如下的对话框:

建立一个连接字符串时,我们有两种选择:使用Data Link File(数据连接文件)(.UDL)或手工建立一个连接字符串。现在我们手工建立它,点击Build按钮—弹出Data Link Properties(数据连接属性)对话框。这个对话框有4页。Provider(提供者)页允许你指定提供者—这里选择Microsoft Jet 4.0 OLE DB Provider。点击Next(下一个)按钮将引导我们进入第二页:Connection(连接)。选择省略号按钮浏览找到我们的数据库(AboutDelphi.mdb)。可以点击Test Connection(测试连接)按钮检验是否可以成功连接—应该是成功的。其它页暂时不进行设置。最后,点击OK关闭Data Link Properties对话框,再点击OK关闭ConnectionString对话框—连接字符串被存储在ADOTable组件的ConnectionString属性中。连接字符串已如下所示:

Provider=Microsoft.Jet.OLEDB.4.0;

Data Source=C:\!gajba\About\aboutdelphi.mdb;

Persist Security Info=False

为了完成设计,我们必须设置通过ADOTable组件访问的表名称—再一次使用Object Inspector。

ADOTable1.TableName = applications

如果你想在设计时看见数据库的数据,可使用ADOTable的Active(激活)属性—设置它为True。

哈!如果你已进行以上的所有步骤,现在你见看到Applications表仅有一个记录(行)。当你运行应用程序时,你甚至能改变数据库的数据。当然,你不能做更多的是—这是我所能想到的最简单的ADO的例子。

现在可以结束这一部分了。下一章中,我们将讨论Delphi提供所有的ADO组件以及它们怎样与余下的数据可视化(data-aware)组件进行通讯,从而创建一个功能更强大的Delphi数据库应用程序。

2002年12月22日 20:14

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有