数据库开发(2)

附录:关于TActionList控件的使用

在Standard面板,提供了一个TActionList 控件,它集中了大部分按
钮的使用方法,可以简化按钮的设计。
方法:
调入TActionList,双击,可以看到一个面板,右键 -〉New Standard
Action 选择 Datasat下的适当的控制,可以选择多个。
以后加入的开关,只要在属性Action 中选择适当的项目就可以了,不
需要专门编程,实例见“ActionList应用”。

第四节 ADOQuery组件

和ADOtable组件一样,ADOquery继承了同一个父类TCustomADODataSet,
所以,上面说到的ADOtable属性事件和方法基本上是通用的,但它主要是
针对数据库中的SQL 命令进行操作。
下面主要说一下ADOquery特殊的地方。

1)SQL 属性
SQL 是TStrings类型的属性,包含了ADOquery组件要执行的SQL 命令,
是ADOquery最为重要的属性之一。
在应用程序中,需要调用Open方法或者ExecSQL 方法来执行在SQL 中
的命令。在设计阶段,可以利用属性编辑起来编写。
例如:
Width ADOquery do
Begin
//重新写入时,要关闭原来的查询
Close;
width SQL do
Begin
//因为Add是在原来的基础上加入,所以先清除原来的SQL命令
Clear;
Add('selsct 编号,姓名,奖金')
Add('From 奖金表')
End;
//执行SQL 命令
Open;
End;

查询命令也可以这样来写:

s1:='编号';
s2:='姓名';
s3:='金额';
with ADOquery1 do
begin
sql.Clear;
SQL.Add('select ');
SQL.Add(s1+','+s2+','+s3);
SQL.Add(' From 奖金 ');
execsql;
active:=true;
end;

效果是一样的。

第五节 ADOConnection 和 ADODataSet

虽然ADOTable和ADOQuery组件可以非常简单的连接数据库,但是当需
要更加精细的控制数据库的时候,往往需要应用ADO 更多的方法,我们知
道,支撑ADO 的主要由Connection,Command,Recordsrt三个对象组成,
对应的就有ADOConnection和ADOCommand控件,而Recordsrt对象属性和方
法,封装在ADODataSet中,同时ADODataSet本身,也具备和ADOtable组件
相同的对数据绑定控件控值的属性和方法。
这就大大提高了对数据库的控制能力。
在ADO 顶层有三个对象中Connection处在最顶层,用以指定数据源,
建立和数据源的连接。所以,ADOConnection必须和其它的数据控件连接
才有效,最常用的就是和ADODataSet配合。
下面首先介绍连接方法,然后再讨论其它的问题

1)ADOConnection的加入和连接

加入ADOConnection
属性:ConnectionString='连接字符串'

加入ADODataSat
属性:Connection='ADOConnection1' ..... (ADOConnection,Name)
CommandType=cmdtable ...使用表连接
CommandText 根据上面的选择,或选择表,或出现SQL 编辑框。
Active=True 激活。
加入DataSource
属性:Dataset=ADODataSat 完成连接,再连接数据绑定控件。

2)ADOConnection的重要属性和方法

属性:

a).Attributes
设置连接的数据库自动处理事务的能力
xCommitRetaining:提交一个事务后自动开始一个新事务
xAbortRetaining :回退一个事务的同时开始一个新事务

b).Connected
标识和数据库的连接受否处于激活(True)

方法:

c).Open(UserID,PassWord)
打开一个连接(可以提供用户名和密码)

d).Cancel
关闭数据库的连接

e).Close
释放所有的系统关联资源

f).Execute 执行一个SQL 命令。
完整的表述是

Execute(SQL命令,该命令设计的记录数目,Option)

其中,Option的值如下

eoAsyncExecute 异步执行指定的命令
eoAsyncFetch 给定Cache属性的值后,再异步的取得数据
eoAsyncFetchNonBlocking 非阻塞式线程执行
eoExecuteNoRecords 没有返回纪录

g).GetProcedureNames(List:Tstring);

获取数据库服务器上的存储过程名称,过程名保留在List参
数中。
f).GetTableNames(List:Tstring;SystemTables:Boolean=False)

获取数据库的数据表,表名存放在List参数中,SystemTables
指示是否获取数据库系统表的名称,系统表是关于数据库类型定义
和用户信息的数据表,是数据库本身自动产生的。在特殊的设计中,
这个表格可能会有用。


3)ADODataSet的属性和方法
我们在ADOTable中讨论的属性和方法,几乎都可以在ADODataSet中得
到应用,但还有几个特殊的属性:

CommandType

主要用于控制CommandText属性的状态,其中:

cmdtable ...CommandText使用“表名”连接
(内部是做了SQL 对各列的查询);
cmdTableDirect ...CommandText使用“表名”连接
(内部不做SQL ,而是真正的表名连接);
cmdtext ....使用SQL命令文本;
cmdfile ....CommandType属性值作为持久的文件名;
cmdStoredProc...CommandType属性值作为存储过程名称
来计算;
cmdUnKnown ....不知道(默认为SQL)

CommandText
根据CommandType的设置,向提供者发出“表名”或SQL 命令。

posted @ 2008-12-02 15:04  蒋弢  阅读(217)  评论(0编辑  收藏  举报