delphi教程

Delphi通过ADO链接数据库及对数据库的增加,删除,修改,读取操作实例教程

位置:首页 > delphi教程 > 高级教程,2013-05-24
ADO是一种程序对象,用于表示用户数据库中的数据结构和所包含的数据。ADO(ActiveXDataObjects,ActiveX数据对象)是Microsoft提


ADO是一种程序对象,用于表示用户数据库中的数据结构和所包含的数据。

ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。例如,如果您希望编写应用程序从DB2或Oracle数据库中向网页提供数据,可以将ADO程序包括在作为活动服务器页(ASP)的HTML文件中。当用户从网站请求网页时,返回的网页也包括了数据中的相应数据,这些是由于使用了ADO代码的结果。

        在Delphi 5.0 以上的版本都可以很好的支持ADO技术。

Delphi通过ADO链接数据库(图0)

 Delphi 中 ADO 主要有

1、ADOConnection 用于链接数据库

2、ADOCommand      ADODataSet 用来查询或执行SQL语名;

3、DataSource 数据中间存储组件;

4、DBGrid 数据显示出来;

其实主要是用ADO连接,而ADO也是最常用的连接技术之一。

     以下几个控件在连接数据库时是用得比较多的,并且通常的的连接架构是

————————————————————
             数据库
             ↑
         ADOConnection
         ↑       ↑
ADOCommand     ADODataSet
                   ↑
               DataSource
                   ↑
                 DBGrid
————————————————————

或者

————————————————————
         数   据   库
         ↑       ↑
   ADOCommand     ADODataSet
                     ↑
                 DataSource
                     ↑
                   DBGrid
————————————————————

也就是说,ADOCommand和ADODataSet既可以通过ADOConnection连接数据库,也可以不用,分别直接连接数据库,因为这三个控件都有一个共同的ConnectionString属性。

一、 TADOConnection组件
该组件用于建立数据库的连接。ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等。
该组件用于建立数据库的连接,该连接可被多个数据集所共享,但是并不是应用程序中必须的,因为ADO数据集及命令组件通过设置其ConnectionString属性,可以直接连接到数据库。但是如果多个数据集使用相同的数据库连接时,则使用TADOConnection就有一定的优势,因为不必为每个数据集都单独建立数据库的连接,同时也减少了资源的消耗,并且可以建立跨越多个数据集的事务。一个事务(transaction)是数据库操作的一个阶段,用户对数据库的修改都保存在本地计算机的内存中,只有提交一个事务后,才能将修改的内容提交到数据库中。如果选择了回滚事务,则所有的修改将被取消,而不会提交到数据库中。

? TADOConnection组件提供如下功能:
v 控件数据库的连接
v 控制服务器的注册
v 管理事务
v 为关联的数据集提供数据库连接
v 将SQL命令发送到数据库中
v 获得数据库的原数据(metadata)

 TADOConnection的常用属性


1) Attributes
    此属性用于设置连接的数据库的自动处理的行为,它是TxactAttributes
类型的集合,包括两个集合元素:
I. XaCommitRetaining:提交一个事务后自动开始一个新的事务。
II. XaAbortRetaining: 回退一个事务的同时将开始一个新的事务。
2) CommandTimeout
    连接超时属性,用于设置一个命令执行时所能等待的最大时间值。以秒为计量单位。缺省值为30秒,即连接命令等待了30秒之后还没有被执行,系统就放弃这个命令。
3) Connected
    标识和数据库的连接是否处于激活状态。
用户可以查询Connected属性的值来判断数据库的连接状态。如果该属性为true,则表明数据库处于连接状态;为false,则当前数据库连接关闭。
4) ConnectionString
    连字符串用于指定数据库的连接信息。连字符串的标准调用方为:ADOConnection1.ConnectionString:='Provider=ProviderRet;Remote Server=ServerRet';
其中,连接串支持的常用参数如下:
数据库连接参数及说明
         参数 说明
Provider 数据提供者名称,例如MSDASQL.1
Password 登录数据库的口令
         参数 说明
Persist Security  支持安全登录
User ID 登录数据库用户
    DataSource 数据源名称、数据源的设置需要额外的操作
设置成功之后,用户就可以将属性Connected设置为True,如果没有任何提示信息,说明数据库已经成功连接,此时,属性DefaultPatabase就被赋值为连接所指定的数据库的路径。
 5) ConnectOptions
    指定数据库连接是按照同步方式还是异步方式。类型Tconnectoption包含两个值:
v coConnectUnspecified:数据库连接采用同步方式连接。
v coAsyncConnect:异步方式连接数据库。当服务器负载很重的时候,这种连接方式很有用。引用这种连接方式,在第一次建立连接的时候,应用程序不能获得全部的数据。
 6) CursorLocation
     指定数据库指针是指向客户端还是服务器端。类型TcursorLocation包含两个值:
v cluseServer:使用服务器端的数据库指针,适用于数据量大的数据集。
v cluseClient:使用客户端的数据指针的时候,数据将被下载到本地计算机上,并在本地进行操作。
7) DefaultDatabase
    表明数据源成功连接后,这是由数据源自动赋值的。
8) 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的主要方法:
1) BeginTrans
    开始启动一个新的事务,必须保证数据连接处于激活状态。
2) Cancel
    关闭于数据库的连接。
3) CommitTrans
    向数据库提交一个事务。提交成功后,再事务中对数据库所作的修改则写入数据库中,同时一个事务也结束。
4) Execute(constCommandText:Widestring;VarRecordsAffected;Executeoptions:TexcuteOptions=[eoExecuteNoRecords]);
执行一个CommandText类型的SQL命令,其中,CommandText是指定的SQL命令;ReardsAffected指定该命令设计的记录数目;ExecuteOptions指定命令特征如下:
ExecuteOption的值及说明
参数 说明
eoAsyncExecute 异步执行命令
eoAsyncFetch 给定了Cache属性的值后,在异步地去数据
eoAsyncFetchNonBlocking 非阻塞式线程执行
eoExecuteNoRecords 没有返回记录
5) GetProcedureNames(List:Tstring);
    获取数据库服务器上的存储过程名称,获取的存储过程名称在List参数中。
6) GetTableNames(List:Tstring;SystemTables:Boolean=False);
    获取数据库中的数据表,获取的表名存放在List参数中SystemTables参数指示是否获取数据库系统表的名称。数据库系统表是指在数据库中关于数据库数据类型定义和用户信息的数据表,这种系统表是数据库本身自动生成的。
7) Open(const UserID:widestring;constPassword:widestring)                           
    打开一个连接,参数UserID是数据库用户的用户名。Password是用户登录数据库的密码。
8) RollbackTrams
    撤回一个没有全部执行的事务。事务撤回之后,事务中所作的任何修改都不会写入数据库。

 ADOConnection的主要事件
事件 说明
AfterConnect  发生在一个连接建立之后
AfterDisconnect 发生在断开连接之后
BeforeConnect 发生在连接建立前
BeforeDisconnect 发生在断开连接前
OnBeginTranscomplete 发生在开始一个事务时
OnCommitTranscomplete 发生在提交事务成功时
OnConnectComplete 发生在连接完成时
OnDisconnect 发生在断开时
OnExecuteComplete 发生在一个命令执行后
OnInfoMessage 发生在收到数据库的消息
OnLogin 发生在用户登录数据库的时候
OnRollbackTransComplite 发生在一个事务撤回之后
OnWillConnect 发生在发出一个连接数据请求的时候
OnWillExecute 发生在数据库收到一个SQL命令并将要执行之前

TAGS:Delphi通过ADO链接数据库

猜你喜欢

NewHot