首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

2.3.1  使用TSQLDataSet控件

本节的范例将会展示如何使用TSQLDataSet控件来执行DDL语句,在InterBase的数据库中动态建立数据表以及索引,并且删除数据表。

步骤建立数据模块和dbExpress控件

Delphi集成开发环境中点击File|New|VCL Forms Application建立一个新的Delphi.Win32应用程序。接着点击File|New|Others…|Data Module建立空白的数据模块。在此数据模块中加入TSQLConnection控件,连接到范例数据库D2006HDBP,接着放入3TSQLDataSet控件,一个命名为sdsRunDDL,另外一个命名为sdsDropTable,最后一个命名为sdsCreateIndex。然后放入一个TSimpleDataSet控件,命名为scdsQuery并且设定它的CommandText属性值为select * from Books,此时数据模块如图2-29所示。

2-29  范例应用程序的数据模块

sdsRunDDL控件的CommandText属性值中加入如下的SQL语句。这个SQL语句会在数据库中建立一个名为MYESSAYS的数据表。

CREATE TABLE MYESSAYS (

    EID INTEGER NOT NULL,

    ETITLE VARCHAR(60),

    MAGAZINE VARCHAR(60),

    PDATE DATE,

    CONTENTS BLOB sub_type 0 segment size 80,

    NOTES VARCHAR(100));

sdsCreateIndex控件的CommandText属性值中加入如下的SQL语句。这个SQL语句会在MYESSAYS数据表中建立一个以EID字段为基础的主索引对象。

ALTER TABLE MYESSAYS ADD  PRIMARY KEY (EID);

最后一个sdsDropTable控件则是执行DROP Table SQL语句以删除由sdsRunDDL动态建立的数据表。

DROP TABLE MYESSAYS

步骤建立范例主窗体

回到范例应用程序的主窗体,在其中放入TDataSource连接到刚才的数据模块中的scdsQuery,再放入TDBNavigatorTDBGrid。最后放入两个TButton控件,一个设定Caption属性值为建立数据表,另外一个设定Caption属性值为删除数据表。此时主窗体如图2-30所示。

2-30  范例应用程序的主窗体

步骤实现范例应用程序

双击主窗体中的【建立数据表】按钮,并且在它的OnClick事件处理函数中撰写如下的程序代码:

  dmRunDDL.sdsRunDDL.ExecSQL(False);

  dmRunDDL.sdsCreateIndex.ExecSQL(False);

  dmRunDDL.scdsQuery.Active := False;

  dmRunDDL.scdsQuery.CommandText := 'Select * from MyEssays';

  dmRunDDL.scdsQuery.Active := True;

在上面的程序代码中,执行了sdsRunDDL控件中的SQL语句。由于sdsRunDDL件的SQL语句是不返回结果数据集的Create Table语句,因此我们必须调用TSQLDataSetExecSQL方法,而不是Open方法。

ExecSQL方法的原型如下:

function ExecSQL(ExecDirect: Boolean = False): Integer; override;

ExecSQL方法是用来执行不返回结果数据集的SQL语句或是属于DDLSQL语句。它接受一个参数ExecDirect,这个参数代表TSQLDataSet在执行SQL语句之前是否需要先准备(编译)这个SQL语句。 如果ExecDirectFalse,就代表要先准备(PrepareSQL语句,如果ExecDirectTrue,则代表直接执行SQL语句而不需要先准备。如果开发人员需要数次执行相同的SQL语句,那么传递FalseExecSQL方法是比较好的。

sdsRunDDL执行完毕之后,MyEssays数据表应该就被建立了,因此上面的程序代码再指定Select * from MyEssaysscdsQuery,并且打开MyEssays数据表。如果sdsRunDDL正确而且成功地执行,那么在范例应用程序中的TDBGrid中便应该可以看到MyEssays这个数据表了。

接着双击主窗体中的【删除数据表】按钮,并且在它的OnClick事件处理函数中撰写如下的程序代码:

  dmRunDDL.sdsDropTable.ExecSQL(False);

上面的程序代码调用了sdsDropTableExecSQL执行储存在sdsDropTable控件中的SQL语句,以删除MyEssays数据表。

步骤执行范例应用程序

现在可以编译并且执行范例应用程序了。图2-31就是执行范例应用程序的情形,在一开始时范例应用程序显示了Books数据表中的数据。当我们点击了【建立数据表】按钮之后,范例应用程序会动态建立MyEssays数据表,并且打开它显示在TDBGrid中。

2-31  执行范例应用程序的画面

现在如果到数据库管理工具中检查,便可以看到类似图2-32所示的画面,证明了范例应用程序果然在数据库中成功动态建立了MyEssays数据表。

这个范例应用程序展示了如何使用TSQLDataSet动态建立数据表,随后的章节会继续讨论如何使用TSQLQuery控件在动态建立的数据表中新增数据。

2-32  范例应用程序在InterBase 7.5中建立了MyEssays数据表