数据库指针是什么-贴库改版看看十库是倒退
ADO面板控件介绍
1.TADOConnection组件
该组件用于建立与数据库的连接。 ADO的数据源组件和命令组件可以通过该组件运行命令和从数据库中提取数据。
该组件用于建立数据库连接,可由多个数据集共享,但在应用程序中不是必需的,因为ADO数据集和命令组件可以通过设置它们的ConnectionString属性直接连接到数据库。 但是,如果多个数据集使用同一个数据库连接,使用TADOConnection有一定的优势,因为不需要为每个数据集建立单独的数据库连接,同时也减少了资源消耗,可以跨多个Dataset事务建立。 事务是数据库操作的一个阶段。 用户对数据库的修改保存在本地计算机的内存中。 只有提交事务后,修改后的内容才能提交到数据库。 如果选择Rollback Transaction,所有的修改都会被取消,不会提交到数据库。
ØTADOConnection组件提供以下功能:
v 控制数据库连接
vControl 服务器注册
v管理事务
v 为关联的数据集提供数据库连接
v向数据库发送 SQL 命令
v 获取数据库的原始数据(元数据)
ØTADOConnection的常用属性
1)属性
该属性用于设置连接数据库的自动处理行为,它是TxactAttributes
类型的集合,由两个集合元素组成:
I.XaCommitRetaining:提交一个事务后自动开始一个新的事务。
II.XaAbortRetaining:在回滚一个事务的同时开始一个新的事务。
2) 命令超时
连接超时属性用于设置命令执行时可以等待的最大时间值。 以秒为单位测量。 默认值为30秒,即等待30秒后如果连接命令还没有执行,系统将放弃该命令。
3) 连接
标识与数据库之间的连接是否处于活动状态。
用户可以通过查询Connected属性的值来判断数据库的连接状态。 如果该属性为真,则表明数据库已连接; 如果为假,则关闭当前数据库连接。
4) 连接字符串
连接字符串用于指定数据库的连接信息。 连接字符串的标准调用方是:ADOConnection1.ConnectionString:='Provider=ProviderRet;Remote Server=ServerRet';
其中,连接字符串支持的常用参数如下:
数据库连接参数及说明
参数说明
Provider 数据提供者名称,例如 MSDASQL.1
密码 登录数据库的密码
参数说明
Persist Security 支持安全登录
用户ID登录数据库用户
DataSource数据源名称,数据源设置需要额外操作
设置成功后,用户可以将属性Connected设置为True。 如果没有提示信息,说明数据库已经连接成功。 这时属性DefaultPatabase被赋值为连接指定的数据库的路径。
5) 连接选项
指定是同步还是异步建立数据库连接。 类型 Tconnectoption 包含两个值:
vcoConnectUnspecified:数据库连接是同步连接的。
vcoAsyncConnect:异步连接数据库。 当服务器负载很重时,此连接很有用。 参考这种连接方式,当第一次建立连接时,应用程序无法获取所有数据。
6) 光标位置
指定数据库指针是指向客户端还是服务器。 TcursorLocation 类型包含两个值:
vcluseServer:使用服务器端数据库指针,适用于数据量较大的数据集。
vcluseClient:使用客户端的数据指针时,会将数据下载到本地电脑,在本地进行操作。
7) 默认数据库
表示数据源连接成功后由数据源自动赋值。
8) 隔离级别
规定了不同事务之间的相互独立程度,实际上是对数据库的一系列操作的集合。 交易是不可或缺的。 如果交易中的某个步骤不能正确执行,则整个交易将不会执行。 由于数据库服务器可以同时支持多个连接,来自不同连接的事务可能同时操作同一个数据,这可能会导致数据不一致。 为了防止这种情况发生,ADO 引入了一个与事务无关的级别来确定不同事务之间的相互关系。 设置事务独立级别并调用BeginTrans方法后,新的事务独立级别就会生效。
TISolationLevel一共有9个常量值:如下:
TISolationLevel 常量和说明
常量参数说明
ilUnspecified 使用默认的独立级别,没有其他独立级别
ilChaos 独立级别较高的事务对数据的更改不能被当前事务覆盖
ilReadUncommitled 当前事务可以读取其他事务未提交的数据
ilBrowse 当前事务可以读取其他事务未提交的数据
只有在 ilcursorStability 事务提交后才能读取数据
只有在 ilReadCommitled 事务提交后才能读取数据
ilRepeatableRead无法读取其他事务的数据,执行Requery操作获取这些数据
ilSerializable 获取独立于其他事务的事务级别
ilIsolated 获取一个事务与其他事务的隔离级别
Microsoft Data Access SDK 中详细描述了这些常量的定义。 为了进一步了解,您可以查看 Microsoft SDK 文档。
9) 保持连接
指定在数据集未打开时是否保持数据连接。
频繁打开和关闭数据库的操作会影响系统的性能,尤其是在网络上,会在一定程度上增加网络的负载。 该属性将数据源设置为始终连接数据库指针是什么,可以显着提高程序的性能。
10) 登录提示
指定每次建立连接时是否弹出登录对话框提示用户登录。 如果设置为 False,则必须在 ConnectionString 中指定登录数据库的用户和密码。
11) 模式
指定连接数据库的操作权限。 这种连接方式的取值如下:
连接方式参数及说明
参数说明
cmUnknown 数据库操作权限未指定或无法确定
cmRead只能读取数据库
cmWrite 只能写入数据库
cmReadWrite 可以对数据库进行读写操作
cmShareDenyRead 禁止其他用户读取数据库
cmShareDenyWrite 禁止其他用户写入数据库
cmShareExclusive 禁止其他用户开启数据连接
cmShareDengNone 禁止其他用户对数据库做任何操作
ØADOConnection的主要方法:
1) 开始翻译
要开始新事务,数据连接必须保持活动状态。
2) 取消
关闭与数据库的连接。
3) 提交交易
向数据库提交事务。 提交成功后,事务中对数据库的修改被写入数据库,一个事务同时结束。
4) 执行(constCommandText:Widestring;VarRecordsAffected;Executeoptions:TexcuteOptions=[eoExecuteNoRecords]);
执行一条CommandText类型的SQL命令,其中CommandText为指定的SQL命令; ReardsAffected 指定命令设计的记录数; ExecuteOptions 指定命令功能如下:
ExecuteOption 的值和描述
参数说明
eoAsyncExecute 异步执行命令
eoAsyncFetch 被赋予 Cache 属性的值后,异步获取数据
eoAsyncFetchNonBlocking 非阻塞线程执行
eoExecuteNoRecords 不返回任何记录
5) GetProcedureNames(列表:Tstring);
获取数据库服务器上的存储过程名称,获取的存储过程名称在List参数中。
6) GetTableNames(List:Tstring;SystemTables:Boolean=False);
获取数据库中的数据表,获取到的表名存放在List参数中。 SystemTables参数表示是否获取数据库系统表的名称。 数据库系统表是指数据库中有关数据库数据类型定义和用户信息的数据表。 这种系统表是由数据库自己自动生成的。
7) 打开(const UserID: widestring; constPassword: widestring)
打开一个连接,参数UserID为数据库用户的用户名。 密码是用户登录数据库的密码。
8) 回滚电车
撤消未完全执行的事务。 交易撤回后,交易中的任何修改都不会写入数据库。
ØADOConnection的主要事件
活动说明
AfterConnect 发生在连接建立之后
AfterDisconnect 发生在断开连接之后
BeforeConnect 发生在连接建立之前
BeforeDisconnect 发生在断开连接之前
OnBeginTranscomplete 在开始事务时发生
提交事务成功时发生OnCommitTranscomplete
连接完成时发生 OnConnectComplete
断开连接时发生OnDisconnect
OnExecuteComplete 在命令执行后发生
OnInfoMessage 当收到来自数据库的消息时发生
OnLogin 在用户登录数据库时发生
OnRollbackTransComplite 在事务回滚后发生
OnWillConnect 在进行连接数据请求时发生
OnWillExecute 发生在数据库收到 SQL 命令并执行它之前
二、ADOCommand组件
ADOCommand 向数据库发送 SQL 命令并返回请求的数据集。
ADOCommand 组件主要用于运行一些数据定义语言(DDL)SQL 命令或运行不返回结果的存储过程。 对于返回结果集的 SQL 语句,最好使用 TADODataset、TADOQuer 或 TADOStoredProc 组件。 虽然 ADOCommand 组件的 Exexute 方法可以返回结果集,但它通过另一个 ADO Dataset 组件使用记录集。
TADOCommand组件类似于ADOCommand对象,所以ADOCommand组件中的属性和方法可以在ADOCommand对象中找到同名的,效果相同。 如果你用过ASP开发过动态网页,一定对此深有体会。
TADOCommand 表示 ADOCommand(ADO 命令)对象,它通过 ADO 提供程序访问数据库。 TADOCommand 组件执行其 CommandText 属性中设置的命令,并通过调用 Execute 方法执行命令。 如果命令需要使用参数,可以通过Parameters属性进行设置,其功能和设置方法与BDE数据集Tquery组件的Params属性相同。
ØADOCommand的主要属性
1) 命令文本
指定要执行的SQL命令,可以手动编写,也可以使用CommandText编辑器对话框来设置该属性。
CommandText 编辑器专门用于为ADO 组件编写SQL 命令。 表列表框用于列出数据库中的所有表。 选择一个表,点击“Add Table to SQL”按钮,CommandText编辑器会自动将表名插入到SQL命令的相应位置。 选择一个表时,该表中的所有字段将自动列在“字段”列表框中。 同样,在Fields列表框中选择一个字段数据库指针是什么,点击“Add Fields to SQL”,该字段就会被插入到SQL命令中。
2) 命令类型
指定要执行的命令类型:
命令类型参数及说明
参数说明
cmdUnknown 未知命令类型
cmdText 文本类型
cmdTable 命令指定一个表的名称
cmdStoredProc 命令指定存储过程的名称
cmdFile 命令指定保存数据集的文件名
cmdTableDirect 命令指定表的名称并返回所有列
3)连接
指定使用的数据源连接组件的名称,即ADOConnection组件的名称,ADOCommand可以通过该组件连接数据库。
4) 参数检查
指定当SQL命令动态变化时是否重置参数列表。
5) 参数
执行 SQL 命令时要使用的参数。 在参数查询中,即SQL命令或存储过程中需要传递参数时,需要设置该值,当命令类型CmmandType指定为cmdText或cmdStoredProc时,该参数有效。
ØADOCommand主要方法:
1)取消
中止正在运行的命令
2)分配(来源:TPersistent)
将另一个 ADOCommand 组件的所有属性复制到当前 ADOCommand 组件。 调用时,通过名称访问组件对象。
3) 执行
执行ADOCommand组件中包含的命令,返回的结果是一个数据记录集,可以被其他ADO组件的Recordset记录集属性调用。
三、ADODataset组件
ADODataset是ADO组件中最通用的组件,它可以获取和表示任何其他ADO组件从数据库返回的数据集合。 数据集是由 SQL 命令返回的一个或多个数据表。
要使ADODataset 数据集组件正常工作,首先应设置其Connection 或Connection String 属性以建立与数据库的连接。 如果要使用 RDSDataSpace 对象将数据集连接到基于 ADO 的应用程序服务器,则需要将 RDSConnection 属性设置为 TRDSConnection 对象。
由于 ADODataset 组件必须返回一个结果集,如果在其 CommandText 属性中使用语句,则只能使用 SELECT 语句,而不能使用数据操作语言 (DML),如 DELETE、INSERT 和 UPDATE 语句。
同时,由于数据集的原因,可以使用SQL语句。 因此可以从一个或多个基表中查询数据。
ØADODataset的常用属性
1) 主动
表示当前记录集是否打开,调用open方法,打开数据库,Active值为True; 调用close方法,关闭数据库,此时Active为False;
只有当Active的值为False时,应用程序才能读写数据库。 需要将Active改为True的情况是:
v 数据库的状态设置为 dsBrowse(浏览方式、查看、扫描数据)。
v 如果程序中加载了 BeforeOpen 事件,则触发该事件的时间。
v 如果程序加载 AfterOpen 事件,则事件被触发。
当 v 通过记录集打开一个数据指针时。
当改变数据集的属性,而这些属性影响到数据库的状态或数据显示组件的状态时,应事先将数据集的Active属性设置为False;
2) 自动计算字段
设置为 True 以允许应用程序触发 OnCalcFileds 事件。 计算字段取决于当前记录的一个或多个字段。 通过已有的现场数据进行统计计算。 如果值为True,当记录数据被修改或编辑时,将触发OnCalcFields事件。 应用程序自动更新计算字段的值以确保数据的一致性。 可以触发 OnCalcFileds 事件的条件是:
vDataset 组件的状态更改为 dsEdit。
v 记录已被修改。
v 应用程序从数据库中检索一条记录。
可以看出,上述情况并不都需要更新计算字段。 如果用户需要频繁修改数据,就会不断调用OnCalcFields事件。 频繁的调用在一定程度上影响了应用的性能。 在这种情况下,属性 AutoCalcFields 可以设置为 False。
3)缓存大小
指定数据集的缓冲区大小。 数据集先从数据库中取出数据,然后保存在内存的某个字段中。 这块内存区域称为缓冲区。 如果CacheSize设置为20,则表示数据集会一次从数据库中提取20条记录,并将这20条记录保存在缓冲区中。 默认值为 1,这也是最小值。
4)命令文本
指定数据集合包含的命令,可以是SQL语句、表名或存储过程名。 常用的调用形式有:
用 ADODataset1 做
开始
命令类型:=cmdText;
command Text:='Select * From customerTable';
打开;
结尾;
5) 文件管理器
数据集的过滤器可以使用过滤器过滤掉不需要的数据。 设置 Filter 属性的典型方法是:
从 ADODataset1 开始
过滤:=假;
Filter:='State='+Quotedstr('CA')+'OR'+”State='+Quotedstr('CA');
过滤:=真;
结尾;
如果用户用过滤后的数据集修改数据,如果修改后的结果不满足过滤条件,则修改后的数据会自动从当前数据库中消失。
6) 最大记录
返回数据集中的记录数,默认值为 0。
ØADODataset常用方法
1)GetIndexNames(列表:Tstring)
查询表中所有索引,返回值保存在参数List中,调用方法为:
ADO 数据集 1。 GetIndexNames(ListBox1.Items);
2) 删除记录(AffectRecords:TaffectRecords=arAll)
删除记录集中的记录,参数AffectRecords用于指定要删除的具体记录。 它可以采用以下值:
AffectRecords的参数及说明
参数值说明
arCurrent 只删除当前记录
arFiltered 删除满足过滤器过滤条件的数据
arAll 删除一条记录的所有记录
arAllChapters 删除ADO连接数据部分的所有记录
默认为 arAll,它删除当前记录集中的所有记录。
3) 定位(const KeyFields: String; constKeyValues: Variant; Options: TLocateOptions)
找到一条记录并将这条记录设为当前记录。 其中,KeyFields为索引的字段名; KeyValues是要查找的值; options为定位数据选项,取值可以为:
vIoCaseInsensitive:位置数据不区分大小写。
vIoPartialkey:部分匹配定位查找数据。
4)重新查询(选项:TexecuteOption=[])
为了刷新数据集中的数据,它通过重新执行原始命令或 SQL 语句来重新生成记录集。
5) SaveToFile(constFileName:String='';Format:TpersisFormat=PftAdTg)
将当前数据集中的数据以指定格式保存到指定文件中。 FileName 为指定的文件名: Format 为保存的文件格式,可以选择以下值:
vPfAdTG:生成 ADTG(高级数据表)格式的文件。
vPfXML:以 XML 格式保存文件。
6)寻求(constKeyValues:变体;seekOption:Tseekoption = SoFirstEQ)
搜索记录并将指针移动到数据集。 搜索操作基于当前数据集中的索引。 其中KeyValues是要查找的值。
成功:=ADODataSet1.seek('琼斯',SoFirstEQ);
如果找到复合索引的值,则返回True,否则为False,可以同时查找多个值 :
ADO 数据集 1。 seek(VarArrayof([90030,90020]), soFirstEQ);
这就需要使用函数VarArrayof()构造一个参数传递给KeyValues。
Seek的第二个参数seekoption定义了搜索行为的动作。 可能的值如下:
Seekoption的值和说明
参数值说明
SoFirstEQ Rexord 数据库指针定位到第一个匹配记录,如果没有匹配记录,则指向未记录的数据库
SoLastEQ Record数据库指针定位到最后一条匹配记录,如果没有匹配记录,则指向未记录的数据库
SoAfterEQ Record,如果找到匹配记录,指向下一条匹配记录,如果没有找到,指向最接近的匹配记录