ADO编程——获取表的所有字段(C++)

我们有时候需要通过程序获取表的所有字段,那么用ADO提供的接口获取还是很方便的。


vs2005创建控制台程序,语言为C++。

核心代码如下:

struct TableField
{
    TableField()
        : strFieldName(_T(""))
        , nFieldType(0)
        , nFieldLength(0)
    {
    }

    CString strFieldName; // 字段名称
    int nFieldType; // 字段类型
    int nFieldLength; //字段大小
};

/*
@brief 获取表的所有字段
@param[in] pConnPtr 数据库连接
@param[in] strTableName 表名称
@param[out] vTableFields 字段列表
@return 获取是否成功
*/
bool GetTableField(_ConnectionPtr& pConnPtr, const CString& strTableName, vector<TableField>& vTableFields)
{
    CString strSql = _T("");
    strSql.Format(_T("select * from %s"), strTableName);

    _RecordsetPtr pRecordsetOrig;
    pRecordsetOrig.CreateInstance(__uuidof(Recordset));
    HRESULT = pRecordsetOrig->Open(_bstr_t(strSql), _variant_t(pConnPtr.GetInterfacePtr()),
        adOpenDynamic, adLockOptimistic, adCmdText);

    // 得到所有字段
    FieldsPtr fields = pRecordsetOrig->GetFields();
    for (long i = 0; i < fields->Count; i++)
    {
        FieldPtr field = fields->Item[i];

        TableField curField;
        curField.strFieldName = field->Name;//字段名
        curField.nFieldType = field->Type;//字段类型
        curField.nFieldLength = field->NumericScale;

        vTableFields.push_back(curField);
    }

    pRecordsetOrig->Close();

    return true;
}



你可能感兴趣的:(编程,C++,c,数据库,struct,语言)