首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 動態 SQL 程式設計實戰:資料庫查詢器完整原始碼解析

     編輯:Delphi

17.5.2 動態 SQL 查詢器架構解析

範例程式 main.pas + RSLTFORM.pas 示範:使用者選擇資料庫別名 → 資料表 → 欄位 → 運算子(=、>、Like、In 等)→ 輸入值 → 動態組裝 WHERE 子句 → 執行查詢 → 結果視窗呈現。

核心流程(BitBtn2Click)

  1. 驗證使用者已選別名、資料表、(必要時)欄位與值
  2. 判斷欄位型別(ftString/ftMemo)決定是否加單引號
  3. 依 ComboBox1.ItemIndex 對應 etSQLOps 列舉,case 產生 strWhere:
列舉值SQL 片段範例
soEqualField = 'Value'CustNo = '123'
soNotEqualField <> 'Value'CustNo <> '123'
soLessThanField < 'Value'—
soStartsWithField LIKE 'Value%'Name LIKE 'Smith%'
soContainsField LIKE '%Value%'Name LIKE '%Smith%'
soBlankField IS NULL—
soInsideField IN ('V1','V2')值需自行分隔
  1. 組裝完整 SQL:SELECT * FROM "Table" t WHERE t.Field = 'Value'
  2. 建立結果視窗 TResultForm,設定 Query1.DatabaseName、Query1.SQL.Text、Active := True
  3. 檢查 RecordCount,為 0 則拋例外;否則 ShowModal 呈現

結果視窗 (RSLTFORM)

  • DBGrid1 + DBNavigator 綁定 Query1
  • 狀態列顯示查詢條件摘要
  • SpeedButton2 點擊顯示完整 SQL 文字

關鍵技術點

  • Query1.Close → SQL.Clear → SQL.Add → Active := True 標準動態查詢流程
  • 字串欄位自動加引號,數值欄位不加
  • 使用 try...finally 保護結果視窗實例釋放
  • Screen.Cursor := crHourGlass/crDefault 長時間操作視覺回饋

此範例展示 Delphi 動態 SQL 組裝、參數化防注入(簡易版)、多視窗協作的完整企業級查詢器骨架。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved