::CoInitialize(NULL);
CString strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Post.mdb""Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Post.mdb");
bool bRet = m_dataBase.Open(strConnect);
if (!bRet)
{
OutputDebugString("Error!\n");
return FALSE;
}
else
{
OutputDebugString("Success!\n");
} CString strSQL;
_variant_t var;
_RecordsetPtr pRecordset;
strSQL.Format("select * from PostData");
pRecordset = m_dataBase.OpenTbl(adCmdText,(char *)(LPCSTR)strSQL);
long nRows, nCols;
nCols = pRecordset->Fields->GetCount();
nRows = 0;
while (!pRecordset->adoEOF)
{
nRows++;
pRecordset->MoveNext();
}

//////////////////指定单元格的列宽//////////////////////////////
long nSize;
long nstrLen;
CString strFld;

BSTR   bstrColName;  for(long i = 0; i < nCols; i ++)
{
nSize = pRecordset->Fields->GetItem(i)->DefinedSize;
pRecordset->Fields->GetItem(i)->get_Name(&bstrColName);
strFld.Format("%s", bstrColName);
OutputDebugString(strFld);
}
为什么获取我的字段名 是乱码呢?  我的第一字段是 sp_id

解决方案 »

  1.   

    pRecordset->Fields->GetItem(i)->name;
    pRecordset->Fields->GetItem(i)->getname();
    我都试过了 就是都说乱码 谁有遇到过这个问题  回答下 
    高手帮忙下
      

  2.   

    strFld.Format("2.%s\n", pRecordset->Fields->GetItem(i)->Name);
    OutputDebugString(strFld);
    strFld.Format("3.%s\n", pRecordset->Fields->GetItem(i)->GetName());
    OutputDebugString(strFld);
    按理说应该是可以的 可是出来的就说乱码 郁闷
    我的字段名是SP_ID
      

  3.   

    自己解决了 
    strFld.Format("3.%s\n", (LPCTSTR)pRecordset->Fields->GetItem(i)->GetName());
      

  4.   

       
     BSTR   bstrColName; for(long i = 0; i < nCols; i ++)
    {
         nSize = pRecordset->Fields->GetItem(i)->DefinedSize;
         pRecordset->Fields->GetItem(i)->get_Name(&bstrColName);
         strFld.Format("%s", bstrColName);
         OutputDebugString(strFld);
    }这里可能有问题,BSTR里面的字符串是WCHAR字符串,也就是宽字节字符串,
    你用_bstr_t类型代替BSTR看看,
      

  5.   

    _bstr_t 可以实现BSTR或UNICODE字符串到ANSI字符串的转换
      

  6.   


    _variant_t var;var = pRecordset->Fields->GetItem(i)->GetName();CString str = var.bstrVal;MessageBox(str);