连接数据库没问题,调试到执行sql语句时报错:
sql="select * from student";
m_rs->Open((_variant_t)(sql),_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
为什么会出现这种错误?谢谢!

解决方案 »

  1.   

    最后跟踪结果是在连接数据库时,创建创建Connection对象不成功,这是什么原因?
      

  2.   


    在你用到ADO对象之前初始化一下ole对象
    CoInitialize(NULL);在用完之后要调用
    UnCoInitialize(NULL);
      

  3.   

    用ADO创建Connection对象不成功,没有正确初始化COM环境, CoInitialize(NULL);
      

  4.   

    首先 确认 你DLL中有连接到DB么。
      

  5.   

    初始化COM环境了,并且dll有连接到数据库
      

  6.   

    呵呵,i 服了 u 了。把“创建Connection对象”部分贴出来好不好?
      

  7.   

    ok
    具体代码如下:
    HRESULT hr;
    try
    {
    hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象 if(SUCCEEDED(hr))
    {
    hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown
    }
    else AfxMessageBox("创建Connection对象错误!");
    }
    catch(_com_error e)///捕捉异常
    {
    CString errormessage;
    errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
    AfxMessageBox(errormessage);///显示错误信息
    } 在if(SUCCEEDED(hr))句时不成功。
      

  8.   

    m_rs没有创建
    try
    {
    hr = m_pRecordset.CreateInstance("ADODB.Recordset");
    if(SUCCEEDED(hr))
    {
    }
    }
    catch(...)
    {
    AfxMessageBox("Error!");
    bRet = FALSE;
    }
      

  9.   

    原因是在初始化com环境时,要这样做:
    AfxOleInit();
    CoInitialize(NULL);谢谢各位!