我想用ADO读出数据,并写到一个文本文件里,出了一点问题,望大虾们帮忙!
void CCSApp::BEIFEN()
{
         FILE* file;
int i;
_variant_t vtIndex,p;
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("select * from people",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

if((file=fopen("a.txt","w")) != NULL)
while(!m_pRecordset->adoEOF)
{
for(i = 1;i<=m_pRecordset->Fields->Count;i++)
{
vtIndex.iVal = i; fputs((char*)(_bstr_t)m_pRecordset->Fields->GetItem(vtIndex)->Value,file);
}//这里出错,First-chance exception in CS.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception.写不进去,
m_pRecordset->MoveNext();
}
}

解决方案 »

  1.   

    去掉fputs,定义一个char*型的变量,然后给它赋值,看看数据库的值到底读取出来没有.或许不是文件操作的问题,而是数据库的问题.
      

  2.   

    你(char*)(_bstr_t)这样转换的话,取数据库里的一个数据刚好为空的话,就会出现错误,你应该使用
    try{}
    catch{}捕捉一下错误的。
      

  3.   

    是的啊
    我这样写:
    char * ptr;
    ptr = (char*)(_bstr_t)m_pRecordset->Fields->GetItem(vtIndex)->Value;
    出现同样的错误?
    怎么办啊?