第十七章 SQL編程(二)
SQL編程實例
我們在學習了SQL程序的編寫方法之後我們便可以著手創建自己的應用程序了通過創建應用程序我們對Delphi的強大功能就會有更深刻的印象同時會進一步全面掌握有關SQL編程的知識在本節中我們主要介紹兩個例子前一個例子主要是用靜態的SQL語句編程後一個例子是用動態SQL語句編程
設計簡單的SQL程序編輯器
例:在這個例子中我們設計一個交互式的SQL程序編輯器在這個編輯器中我們可以根據SQL語言的語法規則編寫常用的SQL命令並通過單擊編輯器中的有關的按鈕直接執行編寫好的SQL命令SQL命令的執行結果也會及時地通過一個TDBGrid 部件顯示出來
表 SQL編輯器中個主要部件的屬性
━━━━━━━━━━━━━━━━━━━━
部 件 屬 性 值
────────────────────
Form Caption=SQL程序編輯器
DBGrid DataSource=DataSource
Button Caption=執行(&E)
Button Caption=清除(&C)
Button Caption=退出(&X)
Button kind=bkClose
Memo
DataSource DataSet=Query
Query DatabaseName=DEMOS
━━━━━━━━━━━━━━━━━━━━
因為我們在設置Query的DatabaseName屬性時將其設置為DEMOS所以我們設計的這個SQL程序編輯器只能對DEOMS中的數據庫表進行操作
單擊按鈕Button的事件處理過程代碼為
程序清單
procedure TFormButtonClick(Sender:TObject)
begin
Queryclose;
QuerySQLclear;
QuerySQLAdd(Memotext)
QueryOpen;
end;
單擊按鈕Button的事件處理過程為
程序清單
procedure TFormButtonClick(Sender:TObject)
begin
Queryclose;
QuerySQLclear;
QueryExceSQL;
end;
下面我們對程序清單和程序清單中的程序代碼進行簡要的分析
程序清單中的程序代碼是用來執行查詢的
Queryclose;
這一行程序是用來關閉Query的我們在前面的章節中介紹過只有在調用close 方法將TQuery部件關閉之後才能修改其SQL屬性值執行close命令關閉查詢是很安全的如果查詢已經被關閉了調用該方法不會產生任何影響
QuerySQLclear;
因為TQuery部件的SQL屬性只能包含一條SQL語句調用Clear 方法的目的是為了清除SQL屬性原來的屬性值即原來的SQL命令語句如果不調用clear方法清除原來的SQL命令語句當在後面的程序中調用Add方法為SQL屬性設置新的SQL命令語句時Delphi 會將新的SQL命令語句加在原來的SQL命令語句這樣使得SQL屬性中包含兩條獨立的SQL語句這是不允許的
QuerySQLAdd(Memotext)
該條命令是將SQL編輯器的編輯區內的內容(TMemo部件Memo)設置成Query的SQL屬性值
Queryopen;
該語句用來執行Query中的SQL命令語句如果執行查詢從數據庫中獲得查詢結果查詢結果會在數據網格DBGrid中顯示出來
程序清單是用來清除查詢的其前兩行語句跟程序清單中的代碼是一樣的QueryExecSQL有一些特別調用ExecSQL方法也是打開QueryExecSQL方法與open方法不一樣的請參看前面的章節當Query中SQL屬性值為空時即沒有SQL語句時只能調用ExecSQL方法來打開Query如果調用 open 方法會返回一個錯誤 在執行完 QueryExecSQL語句之後應用程序將會清除數據網格DBGrid中的所有內容
設計一個數據庫查詢器
例:在數據庫查詢器中用戶可以選擇要查詢的數據庫查詢數據庫中的那一個表根據數據庫表中那一個字段進行查詢並且可以方便地指定查詢條件指定查詢條件主要包括指定邏輯運算符(=><<=>=likeinNOT likeNOT in)和字段值
例子全部的程序清單如下
unit main;
interface
uses
SysUtils Windows Messages Classes Graphics Controls
Forms Dialogs StdCtrls DB DBTables Buttons ComCtrls Tabnotbk;
type
TQueryForm = class(TForm)
BitBtn: TBitBtn;
DataSource: TDataSource;
Table: TTable;
GroupBox: TGroupBox;
CheckBox: TCheckBox;
CheckBox: TCheckBox;
PageControl: TPageControl;
[] [] [] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/25140.html