数据库技术与应用第二版第10章_Delphi的数据访问方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第10章Delphi的数据访问方法2/35主要内容10.1Delphi7.0的BDE组件10.2Delphi7.0的ADO组件10.3数据库应用系统开发案例小结3/3510.1BDE组件1.Delphi访问的数据库类型(1)Jet数据库(2)ISAM数据库(3)ODBC数据库2.Delphi数据库连接与访问数据库访问机制数据库连接控件BDETdatabase/通过BDE管理器ADOTADOConnectionDbExpressTSQLConnection4/353.Delphi访问数据的接口数据访问过程涉及三个组成部分:(1)数据提供者(DataProvider)(2)数据服务提供者(DataServiceProvider)(3)数据使用者(DataConsumer)数据使用者和数据提供者之间的桥梁就是数据访问接口对象。Delphi的三种数据访问接口数据访问对象(DAO)。远程数据对象(RDO)ActivcX数据对象(ADO)这些接口分别代表了数据访问技术的不同发展阶段。5/3510.1.1BDE组件页的基本介绍组件组件基本用途介绍TTable通过数据引擎,把数据表中的数据送至TDataSource组件TQuery执行SQL语句TStoreProc允许应用程序接触服务器存储过程TDataBase建立一个与数据库的持久性联系TSession对你所应用的TDatabase组件提供全方位的支持TBatchMoveBatchMove用于复制一个数据库表格结构或者它的数据TUpdataSQL允许用户使用Delphi7.0的缓存数据的更新特性10.1.2TDataBase组件对数据库进行访问之前必须使用TDatabase和数据库进行相应的连接,再对数据集进行相应的操作。在下列场合需要用到TdataBase组件:(1)建立与数据库的永久连接(2)数据库服务器要求用户的登录(3)控制事务的处理(4)应用程序制定的BDE数据库的别名6/35TDataBase组件的属性7/35方法含义AliasName指明连接中的数据库的别名Connected标志联系是否有效DatabaseName指明与该TDatabase组件相连的数据库的名字DataSetCount指明与该TDatabase组件相连的数据库的数目DataSets给出处于活动状态的所有数据集的索引数组Directory指明Paradox或dBASE数据库的工作路径DriverName指明数据库的BDE的驱动名ExclusIve使应用程序享有对数据库访问的专有权Handle指明BDE数据库的句柄TDataBase组件的属性事件含义HandleShared指明是否共享一个数据库的句柄InTransaction标志着数据库是否在事件处理中IsSQLBased指明该TDatabase组件使用的是BDESQLLinksdriver还是BDEODBCKeepConnection指明在没有数据集打开的情况下,应用程序是否保持与数据库的联系Locale指明该TDatabase组件的BDE语言驱动器LogInPrompt指明在建立联系时,是否显示标准的登录对话框Params包含联系中的参数信息SessionName指明该TDatabase组件使用的Session组件名Session指向与该TDatabase组件相连的Session组件8/35TDataBase组件的属性事件含义ReadOnly指明此联系提供只读访问Temporary指明该TDatabase组件是否为暂时的TransIsoLation说明BDE控制database事务的独立等级9/35Connection属性当Connection=True时,表明可以在不打开数据集的情况下与数据库相连。当Connection=False时,表明TDataBase组件没有与任何数据库相连。KeepConnection属性当KeepConnection=True时,表示联系会被保持。DataSets属性应用程序可以通过使用DataSets属性值来访问与该TDatabase组件相连的所有处于打开状态的数据集。10.1.3Ttable组件在Delphi中,访问数据的基本单元是数据集对象。应用程序正是通过数据集组件来访问数据库的。一个数据集对象就代表了数据库的一张表格,或者是访问数据库的一个查询或者存储过程。TTable隶属于数据集组件,它从数据集继承而来,有着许多共同的属性、方法和事件。10/35Ttable组件的主要属性事件含义DatabaseName表明数据集联系的数据库别名DBHandle表明数据集所在的数据库BDE的句柄DefaultIndex表明一个打开表格中的数据是否按默认的索引排序Eof标志着记录指针是否停留在数据集的最后一个记录上Exclusive允许用户以专有的方式打开一个Paradox或dBASE表格Fields指向数据集的字段列表Filter表明当前数据集过滤的文本内容Filtered表明一个数据集的过滤是否被激活FilterOptions设置过滤选项Handle允许程序直接调用API函数11/35Ttable组件的主要属性事件含义IndexFieldName显示数据库表格所采用的索引排序的字段名IndexFields指出数据库中的字段名列表IndexName用来为数据库表格制定当前排列索引MasterFields在主表中指定一个或者多个字段以建立主附表之间的联系MasterSource指定作为数据集主表的datasource组件的名字Name该组件在被其他组件引用时的名字Modified标志着当前记录是否被修改ObjectView指明字段在Fieldsproperty中是层次排列还是平铺RecordCount显示与数据集相连的记录总数12/35Ttable组件的主要属性事件含义RecordCount显示与数据集相连的记录总数ReadOnly明一个数据库表格在此应用程序中是否只读SessionName指定与数据集相连的Session的名字StoreDefs指出数据库表格的字段和索引与数据模块一致,还是与窗体一致TableName指明该组件指向的数据库表格的名字TableStyle指出当前操作的数据表格的类型UpdateMode决定BDE如何在SQL数据库中查询更新记录UpdateObject指出在允许缓存更新时,用来更新只读记录的updateobject组件13/35Ttable组件的主要属性介绍Active属性Active属性是用来说明数据库文件的打开状态。应用Active属性来决定及设定一个数据集组件数据库数据之间的联系。它的属性值是一个布尔数(True/False)来表示的。可以通过下列方法设置Active的属性值为True。(1)触发数据集的BeforeOpen事件(2)设置数据集的状态为dsBrowse(3)在数据集中打开一个BDE记录指针(4)触发数据集的AfterOpen事件DatabaseName属性DatabaseName属性是用来说明当前数据集的来源,即应用程序所利用的数据库的名字。它可以是BDE定义的数据库别名,如DBDEMOS;也可以是数据库文件,像Paradox和dBASE等文件所在的路径;还可以是由TDataBase组件定义的数据库名14/35Ttable组件的主要属性介绍TableName属性它是用来说明这个TTable组件所对应的是数据库中的哪一张数据库表格。它和DatabaseName一样,实在设定阶段给定,它在DatabaseName设定之后给出。Fields属性Fields属性是用来指出数据集的字段列表。应用Fields属性可以访问数据库表格中的字段组合。对于用户来说,利用Fields属性查询字段是非常有用的,有以下两点原因:(1)可以重温数据集的部分或者全部字段。(2)可以对运行时内部的数据结构未知的隐藏表格进行操作。Filter属性Filter属性允许用户定义一个数据集过滤器。当过滤被数据集应用时,只有那些满足过滤器条件的记录才会被显示。15/35TTable组件的重要方法事件含义AddIndex为数据库表格建立一个新的索引Append向数据集中添加一条新的空记录ApplyRange设定数据集的检索范围Cancel在对当前的记录的更改尚未提交时撤销它们ClearFields清除当前记录的所有字段内容Close关闭一个数据集Create产生一个数据库表格组件Delete删除当前记录,将记录指针指向下一条记录CreateTable建立一个使用新的结构信息的表格EditKey将Table组件置于查询状态Edit允许用户编辑数据集中的数据16/35TTable组件的重要方法事件含义FieldByName根据特定的字段名查找字段FindField在数据集中查询一个特定的字段FindKey查找包含特定字段值的记录GetFieldNames读取一个数据集中所有字段名的列表GetIndexNames读取数据库表格中有效的索引列表GotoKey将记录指针移至一条与当前查询值匹配的记录Insert向数据集中插入一条新的空记录Locate查找一条特定的记录并使之成为当前记录MoveBy将记录指针置于数据集中与当前记录相关的一条记录处Open打开一个数据集17/3518/35TTable组件的重要方法事件含义Refresh从数据集中取得数据来更新数据集RenameTable对与此表格组件相关的Paradox或dBASE表进行更名操作SetFields设置一个记录中所有的字段值SetKey在查询前设定查询值和检索范围SetRange设置并应用一个检索范围的起始值和结束值SetRangeEnd指定检索范围的结束记录SetRangeStart指定检索范围的起始记录UnlockTable解除对Paradox或dBASE表格锁定UpdateRecord对一个记录更新触发一个数据事件Post向数据集提交修改的记录TTable组件方法的介绍在TTable组件中实现数据库记录的查询依靠EditKey、FieldByName、FindKey、FindNearest、GotoKey、GotoNearest、Locate以及SetKey这些方法。下面分别介绍前5种具体的使用方法。(1)EditKey调用EditKey方法将数据集置于dsSetKey状态,也就是将TTable组件置于查询状态。同时,存储当前查询值缓冲区的当前内容。(2)FieldByNameFieldByName函数的基本格式如下:functionFieldByName(constFieldName:string):TFiled;FieldByName方法是根据一个特定的字段名查询一个字段。FieldName是一个已存在的字段名。19/35TTable组件方法的介绍(3)FindKeyFindKey函数的基本格式如下:functionFindKey(constKeyValue:arrayofconst):Boolean;FindKey方法相当于将设置表格组件的查找状态、设置查询以及在数据集中查询者三个步骤的功能集中在一个方法调用中实现。(4)FindNearestFindNearest方法与FindKey方法很相似,不同之处在于FindNearest方法不要求精确查询。调用FindNearest方法将移动记录指针到数据集中语查询值精确符合的一个特定的记录或数据集中语查询值最相近的记录。20/35TTable组件方法的介绍(5)GotoKey调用GotoKey方法可以用来查询一条特定的记录,查询值是已经用SetKey或者EditKey方法与Fields属性值确定了的。下面举例说明GotoKey的使用方法:procedureTForm1.Button1Click(Sender:TObject);beginwithTable1dobeginEditKey;{将Table1置于查询状态}FieldByName(‘Country’).AsS

1 / 44
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功