MyException - 我的异常网
当前位置:我的异常网» VC/MFC » MFC ADO方式操作ACCESS03数据库,获取列名有关问题

MFC ADO方式操作ACCESS03数据库,获取列名有关问题

www.myexceptions.net  网友分享于:2013-04-10  浏览:13次
MFC ADO方式操作ACCESS03数据库,获取列名问题
表中共有四列,想动态地把表中内容打印出来,先获取列名,再获取记录内容

获取列名代码如下:

CString Headstr;//列名字符串
for(long i=0;i<nColCount;i++)
{

     Headstr.format("值为:%s",m_pRecordset->Fields->GetItem(_variant_t((long)i))->GetName());
     AfxMessageBox(Headstr);
     //这两句想看看用Headstr取出的列名是否正确,,结果显示为乱码!!为什么呢????

     AfxMessageBox(m_pRecordset->Fields->GetItem(_variant_t((long)0))->GetName());
     //这句可正常输出列名
}

问题如代码中所示,,求高人解答,??、应该如何写呢???

------解决方案--------------------
查看是否为类型转换的问题。GetName()的返回值是?
------解决方案--------------------
获得字段信息:

Fields * pField=NULL;
    try{
        m_pRecordset.CreateInstance("ADODB.Recordset");
        m_pRecordset->Open("select * from 通讯录表",
            _variant_t((IDispatch *)theApp.m_pConnection,
            true),
            adOpenDynamic,
            adLockOptimistic,
            adCmdText);
        m_pRecordset->get_Fields(&pField);//获得字段集
        long fldNum;
        pField->get_Count(&fldNum);//获得字段的数目
        
        BSTR        bstrColName;
        for(long i=0;i<fldNum;i++)
        {
            //获得字段名字
            pField->Item[i]->get_Name(&bstrColName);        
            CString strfName=bstrColName;
            //获得字段的类型
            xxx::DataTypeEnum fType;
            pField->Item[i]->get_Type(&fType);
            int type=fType;
            
            //获得字段的大小
            long lSize;
            pField->Item[i]->get_DefinedSize(&lSize);
       }
        pField->Release();
    }
    catch (_com_error *e) {
        CString  temp =e->ErrorMessage();
        AfxMessageBox("读取数据库失败");
    }

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有