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

C++Builder 6 解決 ADOQuery1->FieldByName 返回 NULL 的問題

     編輯:程式設計綜合問答

問題背景

在使用 C++Builder 6 進行資料庫開發時,開發者常會遇到 ADOQuery1->FieldByName("欄位名")->AsString 返回空值的情況,導致無法正確判斷查詢結果是否存在。這在輸入員工編號查詢、若無資料則提示「查無此人」的場景中尤為常見。

錯誤現象

原始碼嘗試直接讀取欄位值,但 FieldByName 回傳的 Variant 可能為 NULL,導致後續邏輯判斷失效。截圖顯示兩者皆為 NULL,且執行時拋出錯誤。

NULL 值示意圖
錯誤畫面

解決方案

正確的做法是先將欄位值轉為字串,再用 IsEmpty() 判斷是否為空:

AnsiString ID;
ID = ADOQuery1->FieldByName("員工號")->AsString;
if (ID.IsEmpty()) {
    ShowMessage("查無此人");
    return;
}

這樣即可避免 NULL 導致的例外,並正確處理查無資料的情況。

總結

在 C++Builder 中使用 ADO 元件讀取資料時,務必先轉型為字串再檢查是否為空,切勿直接對 Variant 型別進行邏輯判斷。這是處理資料庫欄位可能為 NULL 的標準做法。

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