TADOConnection组件
该组件用于建立数据库的连接。ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等。
该组件用于建立数据库的连接,该连接可被多个数据集所共享,但是并不是应用程序中必须的,因为ADO数据集及命令组件通过设置其ConnectionString属性,可以直接连接到数据库。但是如果多个数据集使用相同的数据库连接时,则使用TADOConnection就有一定的优势,因为不必为每个数据集都单独建立数据库的连接,同时也减少了资源的消耗,并且可以建立跨越多个数据集的事务。一个事务(transaction)是数据库操作的一个阶段,用户对数据库的修改都保存在本地计算机的内存中,只有提交一个事务后,才能将修改的内容提交到数据库中。如果选择了回滚事务,则所有的修改将被取消,而不会提交到数据库中。
TADOConnection组件提供如下功能:
- 控件数据库的连接
- 控制服务器的注册
- 管理事务
- 为关联的数据集提供数据库连接
- 将SQL命令发送到数据库中
- 获得数据库的原数据(metadata)
TADOConnection的常用属性
- Attributes
此属性用于设置连接的数据库的自动处理的行为,它是TxactAttributes类型的集合,包括两个集合元素: - XaCommitRetaining:提交一个事务后自动开始一个新的事务。
- XaAbortRetaining: 回退一个事务的同时将开始一个新的事务。
- CommandTimeout
连接超时属性,用于设置一个命令执行时所能等待的最大时间值。以秒为计量单位。缺省值为30秒,即连接命令等待了30秒之后还没有被执行,系统就放弃这个命令 - Connected
标识和数据库的连接是否处于激活状态。
用户可以查询Connected属性的值来判断数据库的连接状态。如果该属性为true,则表明数据库处于连接状态;为false,则当前数据库连接关闭。 - ConnectionString
连字符串用于指定数据库的连接信息。连字符串的标准调用方为:ADOConnection1.ConnectionString:='Provider=ProviderRet;Remote Server=ServerRet';
其中,连接串支持的常用参数如下:
数据库连接参数及说明
参数 说明
Provider 数据提供者名称,例如MSDASQL.1
Password 登录数据库的口令Persist Security 支持安全登录
User ID 登录数据库用户
DataSource 数据源名称、数据源的设置需要额外的操作
设置成功之后,用户就可以将属性Connected设置为True,如果没有任何提示信息,说明数据库已经成功连接,此时,属性DefaultPatabase就被赋值为连接所指定的数据库的路径。 - ConnectOptions
指定数据库连接是按照同步方式还是异步方式。类型Tconnectoption包含两个值:
coConnectUnspecified:数据库连接采用同步方式连接。- coAsyncConnect:异步方式连接数据库。当服务器负载很重的时候,这种连接方式很有用。引用这种连接方式,在第一次建立连接的时候,应用程序不能获得全部的数据。
- CursorLocation
指定数据库指针是指向客户端还是服务器端。类型TcursorLocation包含两个值:
cluseServer:使用服务器端的数据库指针,适用于数据量大的数据集。
cluseClient:使用客户端的数据指针的时候,数据将被下载到本地计算机上,并在本地进行操作。 - DefaultDatabase
表明数据源成功连接后,这是由数据源自动赋值的。 - IsoLationLevel
指定不同事务之间的相互独立的级别,事务实际上是对数据库的一系列操作的集合。事务具有整体性,如果事务中的某一个步骤不能正确执行,则整个事务都不会执行。由于数据库服务器可以同时支持多个连接,来自不同连接的事务有可能在同一时刻对同一个数据进行操作,这就有可能造成数据不一致性。为防止这种情况出现,ADO引入了事务独立级来确定不同事务之间的相互关系。设定事务独立级之后并调用BeginTrans方法后,新的事务独立级别将生效。
TISolationLevel共包含9种常量值:如下:
TISolationLevel常量及说明
常量参数 说明
ilUnspecified 使用默认的独立级别,没有其它的独立级别
ilChaos 来自更高独立级别的事务对数据的改变不能被当前的事务覆盖
ilReadUncommitled 当前事务可以读取其他事务未提交的数据
ilBrowse 当前事务可以读取其他事务未提交的数据
ilcursorStability 事务提交后数据才能被读取
ilReadCommitled 事务提交后数据才能被读取
ilRepeatableRead 不能读取其它事务的数据,执行Requery操作可以获得这些数据
ilSerializable 从其他事务中获取事务的独立级别
ilIsolated 从其他事务中获取事务的独立级别
这些常量的定义在Microsoft Data Access SDK中有详尽的说明,需要进一步了解可以查询微软的SDK文档。
9. KeepConnection
指定如果在没有打开数据集的情况下是否仍然保持数据的连接。
濒繁地打开和关闭数据库的操作将会影响系统的性能,特别在网络上,会在一定程度上增加网络的负载。这个属性设置数据源始终处于连接状态,可以显著提高程序的性能。
10.LoginPrompt
指定在每次建立连接时是否弹出登录对话框提示用户登录。如果设为False,则必须在ConnectionString中指定登录数据库的用户和密码。
11.Mode
定连接对数据库的操作权限,这种连接模式的值如下:
连接模式参数及说明
参数 说明
cmUnknown 未指定数据库操作权限或无法确定
cmRead 对数据库只能读操作
cmWrite 对数据库只能写操作
cmReadWrite 对数据库可读写操作
cmShareDenyRead 禁止其他用户对数据库读操作
cmShareDenyWrite 禁止其他用户对数据库写操作
cmShareExclusive 禁止其他用户对打开数据连接
cmShareDengNone 禁止其他用户对数据库任何操作
ADOConnection的主要方法:
- BeginTrans
开始启动一个新的事务,必须保证数据连接处于激活状态。 - Cancel
关闭于数据库的连接。 - CommitTrans
向数据库提交一个事务。提交成功后,再事务中对数据库所作的修改则写入数据库中,同时一个事务也结束。 - Execute(constCommandText:Widestring;VarRecordsAffected;Executeoptions:TexcuteOptions=[eoExecuteNoRecords]);
执行一个CommandText类型的SQL命令,其中,CommandText是指定的SQL命令;ReardsAffected指定该命令设计的记录数目;ExecuteOptions指定命令特征如下:
ExecuteOption的值及说明
参数 说明
eoAsyncExecute 异步执行命令
eoAsyncFetch 给定了Cache属性的值后,在异步地去数据
eoAsyncFetchNonBlocking 非阻塞式线程执行
eoExecuteNoRecords 没有返回记录 - GetProcedureNames(List:Tstring);
获取数据库服务器上的存储过程名称,获取的存储过程名称在List参数中。 - GetTableNames(List:Tstring;SystemTables:Boolean=False);
获取数据库中的数据表,获取的表名存放在List参数中SystemTables参数指示是否获取数据库系统表的名称。数据库系统表是指在数据库中关于数据库数据类型定义和用户信息的数据表,这种系统表是数据库本身自动生成的。 - Open(const UserID:widestring;constPassword:widestring)
打开一个连接,参数UserID是数据库用户的用户名。Password是用户登录数据库的密码。 - RollbackTrams
撤回一个没有全部执行的事务。事务撤回之后,事务中所作的任何修改都不会写入数据库。
ADOConnection的主要事件
事件 说明
AfterConnect 发生在一个连接建立之后
AfterDisconnect 发生在断开连接之后
BeforeConnect 发生在连接建立前
BeforeDisconnect 发生在断开连接前
OnBeginTranscomplete 发生在开始一个事务时
OnCommitTranscomplete 发生在提交事务成功时
OnConnectComplete 发生在连接完成时
OnDisconnect 发生在断开时
OnExecuteComplete 发生在一个命令执行后
OnInfoMessage 发生在收到数据库的消息
OnLogin 发生在用户登录数据库的时候
OnRollbackTransComplite 发生在一个事务撤回之后
OnWillConnect 发生在发出一个连接数据请求的时候
OnWillExecute 发生在数据库收到一个SQL命令并将要执行之前
TADOConnection组件的更多相关文章
- delphi通过TADOConnection组件直接连接MSSQL数据库并读写数据。
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...
- ADO面板上的控件简介
ADO面板上的控件简介 一. TADOConnection组件该组件用于建立数据库的连接.ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等.该组件用于建立数据库的连接,该连接可被 ...
- DELPHI控件属性事件说明
常用DELPHI控件属性事件设置说明 常用DELPHI控件属性设置说明目录TForm Class TPanel组件 TToolBar Class TToolButton Class TTimer Cl ...
- DELPHI中四种EXCEL访问技术实现
一.引言 EXCEL在处理中文报表时功能非常强大,EXCEL报表访问也是信息系统开发中的一个重要内容,本文总结以往开发中所用到的几中EXCEL文件访问方法,在实际工作中也得到了很好的验证,本文列举了其 ...
- Delphi通过ADO读写数据库
ADO是一种程序对象,用于表示用户数据库中的数据结构和所包含的数据. ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实 ...
- TADOConnection和TADQuery组件连接访问数据库总结
首先先来简单了解一下TADOConnection控件和TADOQuery控件作用,如下图: 好了简单对这两个控件有了一个初步的认识了,下面我们就通过两种形式来进行访问数据库:第一种是通过手动配置不需要 ...
- ExtJS 4.2 评分组件
上一文章是扩展ExtJS自带的Date组件.在这里将创建一个评分组件. 目录 1. 介绍 2. 示例 3. 资源下载 1. 介绍 代码参考的是 Sencha Touch 2上的一个RatingStar ...
- react组件的生命周期
写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...
- react-router 组件式配置与对象式配置小区别
1. react-router 对象式配置 和 组件式配置 组件式配置(Redirect) ----对应---- 对象式配置(onEnter钩子) IndexRedirect -----对应-- ...
随机推荐
- SpringBoot------单元测试
1.添加测试依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g ...
- Puppet file资源使用
1.文件管理介绍: 可管理的项目: 支持文件和目录 设置文件及目录的所有者及权限 恢复文件(包括文件的内容.权限及所有者) 清理目录以及子目录 2. 可使用参数: ensure :指 ...
- Could not write file: C:\......\.classpath
最近因为换操作系统,把项目从Mac系统copy到了win10下,出现了不少项目部署启动上的问题.最开始的一个问题是:Could not write file: C:\......\.classpath ...
- Mac上的jdk
最近装jdk从网上找到的资料: 一.以前版本的Mac自带了的JDK6,安装在目录:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/下.* JDK7 ...
- MPD软件工作坊上海站本周末在上海举行
本周末(5月26日至27日)由麦思博(msup)主办的第39届MPD软件工作坊即将在上海虹桥会议中心举行.本届MPD将继续围绕软件研发领域,邀请了21位技术大咖,从产品运营.团队管理.架构技术.自动化 ...
- 通过Rabbitmq从ipone手机传输imu和相机数据到电脑端
https://github.com/tomas789/iOSmsg_client https://github.com/tomas789/iOSmsg 通过xcode工具把iosmsg打包发布到ip ...
- vim操作表
- 子分区 复合分区 Subpartitioning
https://dev.mysql.com/doc/refman/8.0/en/partitioning-subpartitions.html
- [daily][qemu][libvirt] 使用libvirt管理qemu
别人创建的虚拟机.用libvirt做的配置. 我一直是手写qemu脚本的,不会用virtsh,所以,学一下. ------------------ 先来个arch的文档: https://wiki.a ...
- [daily][centos][nginx] 在centos7使用nginx启用对文件目录的http访问
1. 安装nginx yum install nginx 2. 修改配置 2.1 提供目录权限: 我需要访问的目录是 /home/data, 用户是data, 所以修改如下配置: [root@S205 ...