版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ADO数据库编程
10.1ADO概述
10.1.1ADO的概念
ADO(ActiveXDataObject)是Microsoft提供对各种数据库进行访问的高层接口,是DAO/RDO的后继产物,是Microsoft最新的数据访问组件(Microsoft数据访问组件简称MDAC)的一部分。
ADO是基于OLEDB之上的面向对象的数据访问模型,OLEDB是Microsoft开发的一种高性能的、基于COM的数据访问技术,其作用是向应用程序提供一个统一的数据访问方法,而不需要考虑数据源的具体格式和存储方式。
10.1.2ADO对象模型及其对象
1.基本对象
(1)Connection对象。
(2)RecordSet对象(3)Command对象。
(4)Field对象。
(5)Property对象。
(6)Parameter对象(7)Error对象。2.集合对象
(1)Errors集合对象。(2)Parameters对象。(3)Fields对象。(4)Properties对象。
10.1.3Delphi对ADO的支持方法
10.2TADOConnection组件
10.2.1TADOConnection组件功能说明
TADOConnection组件用于建立与实际的物理数据库的连接,TADOCommand、TADODataSet、TADOTable、TADOQuery、TADOStoredPro等组件均可以通过它访问和操作数据库。10.2.2TADOConnection组件的常用属性
1.CommandCount属性
2.Commands属性
3.CommandTimeout属性
4.Connected属性
5.ConnectionObject属性
6.ConnectionString属性
7.ConnectionOption属性
8.ConnectionTimeout属性
9.CursorLocation属性
10.DataSetCount属性
11.DataSets属性
12.DefaultDatabase属性13.Errors属性
14.InTransaction属性
15.KeepConnection属性
16.Provider属性
17.State属性
18.LoginPrompt属性
10.2.3TADOConnection组件的常用方法
1.BeginTrans方法其格式如下:
functionBeginTrans:Integer;2.CommitTrans方法
格式如下:
procedureCommitTrans;
3.RollbackTrans方法
使用格式如下:
procedureRollbackTrans;4.Open方法语法格式如下:
procedureOpen;overload;procedureOpen(constUserID:WideString;constPassword:WideString);overload;5.Close方法使用格式如下:
procedureClose;
6.Execute方法
格式1:functionExecute(constCommandText:WideString;constCommandType:TCommandType=cmdText;constExecuteOptions:TExecuteOptions=[]):_RecordSet;overload;
格式2:procedureExecute(constCommandText:WideString;constCommandType:CommandType;var
RecordsAffected:Integer;ExecuteOptions:TExecuteOptions=[eoExecuteNoRecords]);overload;
7.Cancel方法语法格式如下:
procedureCancel;
8.GetProcedureName方法
语法格式如下:
procedureGetProcedureNames(List:TStrings);9.GetTableNames方法
语法格式如下:
procedureGetTableNames(List:TStrings;SystemTables:Boolean=False);10.GetFieldNames方法
语法格式如下:
procedureGetFieldNames(const
TableName:String;List:TStrings);10.2.4TADOConnection组件的常用事件
10.2.5使用TADOConnection建立到数据库的连接
1.通过DSN建立连接
2.通过选择数据库建立到Access数据库的连接
【例10-1】编写一个显示当前目录下“教学.MDB”的数据库中的表名和字段名的程序。程序的设计界面如图10-14所示,程序的运行界面如图10-15所示。程序运行时把当前目录下的“教学.MDB”数据库中的表名显示在ListBox1列表框中,在ListBox1列表框中单击以选中一个表名时,该表所有的字段名将显示在ListBox2中。
分析:在窗体的OnCreate事件中首先使用ADOConnect1组件与当前目录下的“教学.MDB”建立连接,然后通过调用ADOConnection1的GetTableNames方法以获得“教学.MDB”数据库中的表名字符串列表并赋值给ListBox1的Items属性。在ListBox1中选中一个表时,将发生列表框的OnClick事件,在该事件中调用ADOConnection1组件的GetFieldNames方法并以选中的表名作为参数,得到选中表的字段名字符串列表并赋值给ListBox2的Items属性。
10.3TADOCommand组件
10.3.1TADOCommand组件功能说明
TADOConnection不但能够与数据库建立连接,还可以通过它的Execute方法执行SQL命令,但通常不用TADOConnection组件执行命令。在ADO中,TADOCommand组件是专门用来创建和执行命令的。
TADOCommand组件执行在CommandText属性中指定的命令,一个命令可能在一次执行过程中需要某些参数,如果命令包括有关参数,则必须在Parameters属性中指定。可通过调用TADOCommand对象的Execute方法执行命令。
10.3.2TADOCommand组件的常用属性
1.CommandObject属性
2.CommandText属性
3.CommandTimeout属性4.Connection属性
5.ConnectionString属性6.CommandType属性
7.ParamCheck属性8.Parameters属性
9.Prepared属性10.Properties属性
11.State属性
10.3.3TADOCommand组件的常用方法
1.Assign方法
语法格式如下:
procedureAssign(Source:TPersistent);override;
2.Cancel方法
语法格式如下:
procedureCancel;
3.Execute方法
格式1:
functionExecute:_Recordset;overload;
格式2:functionExecute(constParameters:OleVariant):_Recordset;overload;
格式3:functionExecute(var
RecordsAffected:Integer;constParameters:OleVariant):_RecordSet;overload;【例10-2】
利用TADOCommand组件实现如下操作:把当前目录下的“教学.MDB”数据库中的“教师表”中的“工资”字段值全部改为原来的1.1倍,从而实现加工资的功能。程序的设计界面如图10-16所示。程序执行时,单击【连接到数据库】按钮将建立起到“教学.MDB”数据库的连接,然后单击【增加工资】按钮,将把“教师表”中的“工资字段”值全部修改为原来的1.1倍,单击【退出】按钮将先关闭连接并关闭应用程序。
分析:建立连接采用与例10-1同样的方法。要使TADOCommand执行命令,可先通过设置它的Connection属性值来和一个TADOConnection组件对象联系在一起,然后设置它的CommandType属性为需要的命令类型,再设置它的CommandText属性为要执行的命令文本,最后调用TADOCommand对象的Execute方法执行CommandText中存放的命令。
10.4TADODataSet组件
10.4.1TADODataSet组件功能说明
TADODataSet组件是最常用的ADO数据集组件,具有从一个或多个ADO数据表中找到结果数据集的功能。结果数据集可以是直接从数据表中读取的,也可以是通过SQL语句从一个或多个数据表得到的。另外TADODataSet组件还可以用来处理调用TADOCommand对象的Execute方法返回的结果记录集。
10.4.2TADODataSet组件的常用属性
1.RDSConnection属性
2.BlockReadSize属性
3.CacheSize属性
4.CanModify属性
5.CursorType属性
6.EnableBCD属性
7.Filter属性
8.Filtered属性
9.IndexDefs属性
10.IndexFieldCount属性11.IndexFieldNames属性
12.IndexFields属性13.IndexName属性
14.LockType属性
15.MarshalOptions属性
16.MasterFields属性
17.MaxRecords属性
18.RecNo属性
19.RecordCount属性
20.Recordset属性21.RecordsetState属性
22.RecordSize属性23.RecordStatus属性
24.Sort属性
25.StoreDefs属性
10.4.3TADODataSet组件的常用方法
1.GetIndexNames方法从表记录集中取得所用可用的索引名列表
2.BookmarkValid方法
该方法用来测试特定的书签是否合法,书签就是一个记录的标志3.CancelBatch方法
使用该方法将取消批更新模式下对记录集的所有挂起的更新
4.CancelUpdates方法
使用该方法可取消挂起的缓存更新
5.DeleteRecords方法删除记录集中的一个或多个记录
6.FilterOnBookmarks方法该方法的作用是过滤记录到某个书签的位置
7.IsSequenced方法该方法用来返回底层数据库是否将记录的个数作为记录的序号。8.Locate方法
该方法用来根据一个或多个字段的值查找记录,并把查找到的记录设置为当前记录。
9.Lookup方法
该方法用来从数据集中查找记录,从查找到的记录中提取某些字段值10.Next方法
该方法用来把记录指针移到下一条记录11.Requery方法
该方法用来重新执行产生记录集的查询命令以便重新生成记录集12.Seek方法
该方法用来根据索引查找记录
13.UpdateBatch方法
该方法用来把挂起的批更新写到物理数据库中14.UpdateStatus方法
该方法用来返回当前记录的更新状态
10.4.4TADODataSet组件的常用事件
【例10-3】
利用TADODataSet组件编写一个实现对教师表中的数据进行显示、修改和查询的程序。程序设计界面如图10-19所示,程序的运行界面如图10-20所示。程序运行时在网格组件中显示教师表的内容,当在网格组件中单击某条记录时,该记录的若干个字段值将会显示在编辑框中,如图10-20所示。当在编辑框中修改了当前记录的内容后,单击【更新】按钮,修改的结果将保存到数据表中。单击【根据姓名查找】按钮将弹出一个输入对话框,要求用户输入一个姓名,然后根据姓名查找记录。如果找到则给出“找到记录”的提示并把当前记录设为该记录,如果没有找到也给“没有找到”的提示信息,并把当前记录设置为查找前的记录。
分析:本例由于要显示数据库的内容,故应使用能够返回结果记录集的TADODataSet组件。可用一个TADOConnection组件与实际的物理数据库连接起来,用一个TADODataSet组件执行命令从TADOConnection组件连接的数据库中提取记录形成记录集,再用一个TDataSource组件作为TADODataSet组件与数据控制组件连接的桥梁,用一个TDBGrid组件来显示记录集的内容。当记录指针位置发生改变时,要把当前记录的内容显示在编辑框中,本例定义了一个名为DispValue的过程用来实现该功能。另外本例还编写了一个名为SetValue的过程,该过程的作用是利用编辑框中的值修改当前记录的内容。根据姓名查找记录的值,可使用TADODataSet组件的Locate方法。
10.5TADOTable组件
10.5.1TADOTable组件功能说明
TADOTable组件用于通过一个单个的数据表来获取和操作数据集。TADOTable组件和TTable组件非常类似,许多属性、事件和方法也一样。如果不使用TADOConnection组件,TADOTable组件的ConnectionString属性就需要设定;如果使用TADOConnection组件,那么ConnectionString属性就不需要设定,直接设定其Connection属性使其指向TADOConnection组件即可。
10.5.2TADOTable组件的常用属性
1.MasterSource属性
2.ReadOnly属性
3.TableDirect属性
4.TableName属性
10.5.3TADOTable组件的常用方法
语法格式如下:procedureGetIndexNames(List:TStrings);10.6TADOQuery组件
10.6.1TADOQuery组件功能说明
TADOQuery组件类似于Query组件,可以使用SQL语句在一个和多个数据表中选择字段,而且可以增加和删除数据。在使用该组件之前,必须要建立它到物理数据库之间的连接。如果不使用TADOConnection组件,TADOQuery组件的ConnectionString属性就需要设定;如果使用TADOConnection组件,那么ConnectionString属性就不需要设定,直接设定其Connection属性使其指向TADOConnection组件即可。
10.6.2TADOQuery组件的常用属性
1.SQL属性
该属性用来指定利用TADOQuery组件来执行的SQL语句。
2.RowsAffected属性
该属性用来返回最近一次执行查询操作时影响到的记录数,即被操作的记录数。
10.6.3TADOQuery组件的常用方法
TADOQuery组件的常用方法是Open和ExecSQL,这两个方法的作用与TTable组件的同名方法的作用一致。TADOQuery组件的使用方法与TQuery组件也基本一致。10.7TADOStoredPro组件
TADOStoredProc组件通过ProcedureName属性指定存放在服务器上的一个存储过程,应用程序可以执行这个存储过程。如果TADOStoredProc组件是指向一个TADOConnection组件,为了与存储过程相联系,可以调用TADOConnection组件的GetProcedureNames方法,将数据库中的存储过程名返回,然后再将选中的存储过程名赋给ProcedureName属性。
10.8ADO综合应用实例
【例10-4】
编写一个显示选中数据表中的数据或显示SELECT语句执行结果的应用程序,显示的数据来源于当前目录下的“教学.MDB”数据库。程序的设计界面如图10-21所示,程序的运行界面如图10-22所示。程序运行时将在ComboBox1组合框中显示“教学.MDB”中的所有表名,可以通过选择确定在DBGrid组件中显示的是某个表中的数据还是执行某条SELECT语句后的结果。如果用户选择【数据表中的数据】,则可以从ComboBox1组合框中选择一个表名,然后单击“执行命令”按钮,表中的数据将会显示在DBGrid1表格中。如果用户选择【Select语句执行结果】,则可以Memo1组件中输入一条合法的SELECT语句,然后单击【执行命令】按钮,SELECT语句执行的结果将会显示在DBGrid1表格中。
分析:执行SQL语句可使用TADOQuery组件。可先通过TADOConnection组件建立与当前目录下的“教学.MDB”数据库的连接,然后通过设置TADOQuery组件的Connection属性使它能够通过TADOConnection组件访问数据库。通过一个TDataSource组件把TADOQuery组件和TDBGrid组件联系起来,使命令执行的结果集能够显示在TDBGrid组件中。在“执行命令”按钮的单击事件中,首先根据用户的选择及选择的表名或输入的SELECT语句,设置TADOQuery组件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国外用止痛药行业竞争格局及投资价值研究报告
- 2024-2030年中国型煤(型焦)行业发展前景预测规划研究报告
- 2024-2030年中国四功能折叠健身器产业未来发展趋势及投资策略分析报告
- 2024-2030年中国印花涂料色浆市场运行状况及发展趋势预测报告
- 梅河口康美职业技术学院《有限元分析与可靠性设计》2023-2024学年第一学期期末试卷
- 眉山药科职业学院《小学道德与法治课程与教学》2023-2024学年第一学期期末试卷
- 2024年物业买卖合同范本:物业信息与交易条件
- 2024年度绿色建筑HSE施工与运维服务合同2篇
- 微专题物质的制备实验突破策略-2024高考化学一轮考点击破
- 2024年标准专业施工承包协议文件版B版
- 道德与法治中考备考建议课件
- 财产保险退保申请范文推荐6篇
- 食品工程原理课程设计
- YYT 0325-2022 一次性使用无菌导尿管
- 羊膜在眼科临床中应用课件
- (71)第十五章15.2.3整数指数幂1-负整数指数幂-导学案
- 初步设计方案询价表
- 2022年江苏省环保集团有限公司招聘笔试题库及答案解析
- 《汽车焊接技术》试卷期末理论考试含参考答案一套
- FMEA分析经典案例【范本模板】
- 2023-2023年山东省学业水平考试英语试题及答案
评论
0/150
提交评论