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

C++Builder 資料庫 VCL 實戰技巧:DBGrid、TQuery 與查詢程式範例

     編輯:關於C++

一、DBGrid 進階設定

1. 欄位寬度控制

欄位顯示寬度受標題文字限制:若欲顯示 3 字元寬,標題必須 ≤ 3 字元。

2. 自訂顯示欄位與日期格式

  1. 雙擊 TTable 開啟 Fields Editor。
  2. 右鍵 Add Fields... 勾選需顯示欄位(僅勾選者會在執行期出現)。
  3. 點選欄位,在 Object Inspector 設定:
  • DisplayLabel:自訂標題(如將英文欄位名改為中文)。
  • DisplayFormat:日期設 yyyy-mm-dd → 顯示 1999-05-28。

二、TQuery 參數化查詢

SQL 參數語法

SELECT * FROM TableName WHERE FieldName = :ParamName

冒號前綴標識參數,自動在 Params 屬性建立參數項目。

執行期指派參數值

Query1->Active = false;
Query1->Params->Items[0]->AsString = Edit1->Text; // 依索引或參數名
Query1->Active = true; // 重新查詢

結果顯示鏈結

DBGrid1->DataSource = DataSource1;
DataSource1->DataSet = Query1;

三、完整查詢程式範例:書名檢索

表單元件:DBGrid1, DataSource1, Query1, Edit1(輸入書名), Button1(查詢)。

void __fastcall TForm1::Button1Click(TObject *Sender) {
    DBGrid1->DataSource = DataSource1;
    DataSource1->DataSet = Query1;

    Query1->Close();
    Query1->SQL->Clear();
    Query1->SQL->Add("SELECT * FROM Books WHERE Title = :Title");
    Query1->Params->ParamByName("Title")->AsString = Edit1->Text;
    Query1->Open(); // 或 Active = true
}

執行後 DBGrid 僅顯示符合書名的記錄。

四、效能與安全提醒

  • 參數化查詢:防止 SQL 注入,自動處理引號跳脫。
  • 索引善用:查詢欄位建立索引大幅加速。
  • 關閉後重開:修改 SQL/參數前先 Close(),避免「Dataset not in edit/insert mode」錯誤。
  • FireDAC 替代 BDE:現代專案建議改用 FireDAC,支援更多資料庫、非同步查詢、連線池。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved