介面:Memo1 輸入 SQL、DBGrid1 顯示結果、三按鈕(執行/清除/離開)。
核心屬性:Query1.DatabaseName := 'DEMOS'(僅操作 DEMOS 別名下資料表)。
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Close; // 安全關閉,已關閉則無作用
Query1.SQL.Clear; // 清除舊 SQL(TQuery.SQL 只能容納單一陳述式)
Query1.SQL.Add(Memo1.Text); // 載入新 SQL
Query1.Open; // 執行查詢,結果自動填入 DBGrid
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.ExecSQL; // ExecSQL 可在 SQL 為空時呼叫,Open 則會報錯
end;
Open:用於 SELECT 等回傳資料集的陳述式ExecSQL:用於 INSERT/UPDATE/DELETE/DDL 等不回傳資料集的陳述式;SQL.Text='' 時只能呼叫 ExecSQL執行 ExecSQL 後會清空 DBGrid 內容。
見下一篇文章詳細解析。核心差異:
| 維度 | 靜態編輯器 | 動態查詢器 |
|---|---|---|
| SQL 來源 | 使用者手寫完整 SQL | UI 選擇組裝 WHERE 子句 |
| 彈性 | 完整 SQL 功能 | 限定單表單一條件 |
| 適用對象 | 開發者/高階使用者 | 一般終端使用者 |
| 安全性 | 需自行防注入 | 參數化組裝,風險較低 |
Params)、多表 JOIN、預存程序呼叫掌握這兩範例,即具備 Delphi SQL 程式設計從手工到自動化的完整能力光譜。