我在 StdAfx.h中加入如下一行(语句在一行)
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")一步一步做下来, 运行时总是提示Runtime Error,程序就关掉了
下面是在对话框的OnInitDialog()函数中的数据库连接代码. 数据库为Class,用户DSN,已建立, 用户和密码为空
m_pConnection.CreateInstance(__uuidof(Connection));
         // 好像在这一步就出错了
         // 换成这样也不行 m_pConnection->Open("DSN=Class", "", "", -1);
m_pConnection->Open("DSN=Class;UID="";PID=""", "", "", -1); m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open("SELECT * FROM list", 
m_pConnection.GetInterfacePtr(),
adOpenDynamic, adLockOptimistic, adCmdText); _variant_t varName, varID;
try
{
m_pRecordset->MoveFirst();
varName = m_pRecordset->GetCollect("名字");
varID = m_pRecordset->GetCollect("序号");
if (varName.vt != VT_NULL) m_csResvName = (char *)_bstr_t(varName);
if (varID.vt   != VT_NULL) m_lResvID  = varID.lVal;
}
catch (_com_error *e)
{
CString Error;
Error.Format("Open database error: %s", e->ErrorMessage());
AfxMessageBox(Error);
}
大家帮忙看一下 啊

解决方案 »

  1.   

    if(FAILED(::CoInitialize(NULL)))
    {
       ;//do something
    }
    在使用ADO的时候,最开始要初始化COM环境
      

  2.   

    if(FAILED(::CoInitialize(NULL)))
    {
       return;//初始化失败,do something

    放在
    m_pConnection.CreateInstance(__uuidof(Connection));
    之前
      

  3.   

    CoInitialize(NULL)
    {}
    CoUninitialize()
      

  4.   

    我是在C**App中初始化的
    if(!AfxOleInit())
    {
    AfxMessageBox("Component Initialize error!");
    return FALSE;
    }
    是不是 AfxOleInit()了? 用CoInitialize()?
      

  5.   

    不要在C*App中初始化,一个建议,你的情况可以在对话框界面的初始化方法中调用。用CoInitialize()初始化比AfxOleInit()适用性更强。
      

  6.   

    好的谢谢你! 
    问题解决了,似乎 用CoInitialize() 替换 AfxOleInit()就可以了. 不明白...