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

Delphi TQuery 獲取即時資料集與動態 SQL 程式設計入門

     編輯:Delphi

17.3.3 TQuery 回傳資料的兩種模式:即時與唯讀

與 TTable 永遠回傳可編輯的「即時」資料集不同,TQuery 執行查詢後可能產生兩種截然不同的資料集類型,這直接決定了使用者能否在 DBGrid 等資料瀏覽元件中直接修改資料。

即時資料集

具備完整編輯能力:使用者在資料瀏覽元件中修改內容,呼叫 Post 或離開控制項焦點時,變更自動寫回資料庫。行為與 TTable 回傳資料一致。

唯讀資料集

預設模式。資料瀏覽元件鎖定編輯功能,任何修改嘗試均無效。若需修改,必須另闢蹊徑——建立第二個 TQuery 執行 UPDATE/INSERT/DELETE 陳述式。

獲取即時資料集的嚴格約束條件

僅將 RequestLive := True 遠遠不夠,BDE 還要求 SQL 陳述式嚴格符合特定語法規則:

本地資料庫

  • 單一資料表查詢(禁止 JOIN)
  • 不可包含 ORDER BY 子句
  • 不可使用 SUM、AVG 等彙總函數
  • SELECT 清單中不可含計算欄位
  • WHERE 條件僅允許「欄位 與 常數」的比較(=, >, <, >=, <=, LIKE),可用 AND/OR 組合

SQL 伺服器資料庫

  • 單一資料表查詢
  • 不可包含 ORDER BY
  • 不可使用彙總函數
  • Sybase 特例: 被查詢資料表最多只能擁有一個索引

違反上述條件時:本地資料庫自動降級為唯讀;SQL 伺服器直接拋出錯誤。CanModify 唯讀屬性可即時反映資料集是否可編輯。

17.4 動態 SQL 程式設計概覽

動態 SQL(參數化查詢)在實務中佔據主導地位。參數賦值三大途徑:

  1. 設計期參數編輯器: 滑鼠右鍵 → Define Parameters,靜態指定型別與值,缺乏彈性,鮮用於正式專案。
  2. 執行期程式碼賦值(核心):
    • Params[索引] 按順序賦值
    • ParamByName('名稱') 按名稱賦值(推薦)
    • DataSource 屬性自動從主資料集同步參數值

後續章節將逐一深入實作細節。

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