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

ADO 編程:獲取資料表所有欄位名稱的通用方法

     編輯:關於C語言

核心思路

執行 SELECT TOP 1 * FROM TableName 打開一個僅含結構的記錄集,遍歷 Fields 集合即可拿到所有欄位名稱,無需讀取實際數據行,效率極高。

完整代碼 (Visual C++ / ATL)

BOOL GetFields(CACCADO &ado) {
    CString sql = _T("SELECT TOP 1 * FROM TableName");
    ado.OpenRecordset(sql);
    ADODB::_RecordsetPtr rs = ado.GetRecordsetPtr();

    UINT64 colCount = rs->GetFields()->Count;
    for (long i = 0; i < colCount; ++i) {
        CString fieldName = (LPCSTR)rs->GetFields()->GetItem(i)->GetName();
        // TODO: 將 fieldName 存入容器或直接處理
    }
    rs->Close();
    return TRUE;
}

關鍵點解析

  • TOP 1 確保只獲取一行,極小化網絡與 I/O 開銷。
  • Fields 集合索引從 0 開始,Count 給出總欄位數。
  • GetName() 返回 _bstr_t,轉 LPCSTR 再賦值給 CString 即可安全使用。
  • 用畢須調用 rs->Close() 釋放資源,避免連接泄漏。

擴展:獲取欄位類型、長度等元數據

ADODB::FieldPtr fld = rs->GetFields()->GetItem(i);
long type = fld->Type;        // adInteger, adVarWChar 等
long size = fld->DefinedSize; // 定義長度
VARIANT_BOOL nullable = fld->Attributes & adFldIsNullable;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved