在上一节中示例了如何使用TSQLDataSet动态建立数据表,现在让我们继续使用TSQLQuery来展示如何在动态建立的数据表中新增数据。
步骤1 加入TSQLQuery控件
打开范例的数据模块,并且在其中加入一个TSQLQuery控件,命名为sqlqData,如图2-33所示。

图2-33 在数据模块中加入TSQLQuery控件sqlqData
设定它的SQLConnection属性值为数据模块中的scnnRunDDL,并且设定它的SQL属性值如下:
INSERT INTO MYESSAYS
(EID, ETITLE, MAGAZINE, PDATE, NOTES) VALUES
(1, '中文Borland Developer Network技术文章',
'MyBlog',
NULL, NULL)
这个SQL语句会在MYESSAYS数据表中新增一笔新的数据。
步骤2 使用TSQLQuery控件新增数据
回到范例应用程序的主窗体,加入一个新的TButton控件,设定它的Caption属性值为“新增数据”,双击这个TButton控件,并且在它的OnClick事件处理函数中撰写如下的程序代码:
procedure TForm1.btnInsertDataClick(Sender: TObject);
begin
dmRunDDL.sqlqData.ExecSQL(False);
dmRunDDL.scdsQuery.Refresh;
end;
上面的程序代码调用了sqlqData的ExecSQL方法,让它执行储存在SQL语句中的SQL语句,最后调用数据模块中的TSimpleDataSet控件的Refresh方法从数据表中得到最新的数据。
注意到了吗?以前BDE的TQuery在许多的情形下都无法调用Refresh方法重新取得数据,而dbExpress的TSQLDataSet、TSQLQuery和TSQLClientDataSet控件却都可以自由地调用Refresh,比BDE好用得多。
现在重新执行范例应用程序,点击【建立数据表】按钮,再点击【新增数据】按钮,那么便会看到类似图2-34所示的画面,TSQLDataSet和TSQLQuery控件都可以成功地执行DDL语句。

图2-34 范例应用程序动态数据表以及新增数据的画面
前面的范例都展示了如何使用TSQLDataSet和TSQLQuery来执行DDL,或是直接使用SQL语句来处理数据的应用,不过我们可以发现TSQLDataSet和TSQLQuery一次都只能执行一个SQL语句。当开发人员需要执行大量的SQL语句或是所谓的SQL Script时,由于dbExpress没有提供类似TSQLScript的控件,因此开发人员只能一次执行一个SQL语句,相当不方便。不过在dbExpress提供TSQLScript控件之前,我们也可以使用TSQLDataSet和TSQLQuery来仿真TSQLScript控件,让开发人员一次能够执行多个SQL语句。下一小节就展示了这个范例。






