m_database.OpenEx("driver={SQL Server};Server=192.168.0.21;DATABASE=ma;UID=sa;PWD=", false)
可以连接成功,并且读取数据成功,
改成m_database.OpenEx""Provider=SQLOLEDB;Server=192.168.0.21;
DATABASE=ma;UID=sa;PWD=",false)
没有报错,不知是否连接成功,读取不了数据hr = m_pRecordset->Open(szSql,  // 查询DemoTable表中所有字段
m_pConn->GetInterfacePtr(),   // 获取库接库的IDispatch指针
adOpenStatic,
adLockOptimistic,
adCmdText);nTemp = m_pRecordset->RecordCount;返回的值为-1,如果没有查到相应的记录,应该为0 啊,

解决方案 »

  1.   

    BSTR bstrCmd;
    bstrCmd = _bstr_t(szSql);
    m_pRecordset->Open(bstrCmd, (IDispatch *)m_pConnection, adOpenStatic, adLockOptimistic, adCmdText);
    szSql用BSTR格式。打开一次数据库就够了,OpenEx不需要了吧。
      

  2.   

    也许对你有用:1.ACCESS 2000    _ConnectionPtr m_pConn;
        CString m_sConn="Provider=Microsoft.Jet.OLEDB.4.0.1;Data Source=d:\\db1.mdb";
        m_pConn.CreateInstance("ADODB.Connection");
        try
        {
            HRESULT hr=m_pConn->Open((_bstr_t)m_sConn,"","",adConnectUnspecified);    
            if (FAILED(hr))
            {
                AfxMessageBox("不能连接数据库 source!");
                return FALSE;
            }
        }
        catch(_com_error e)
        {
            AfxMessageBox("不能连接数据库 error!");
            return FALSE;
        }2.SQL Server 2000    _ConnectionPtr m_pConn;
        CString m_sConn="Provider=SQLOLEDB.1;Data Source=192.168.3.9;Initial 
    Catalog=sode"; //sode是数据库服务器192.168.3.9上的一个数据库
        m_pConn.CreateInstance("ADODB.Connection");
        try
        {
            HRESULT hr=m_pConn->Open((_bstr_t)m_sConn,"sa","mapper",adConnectUnspecified);    
            if (FAILED(hr))
            {
                AfxMessageBox("不能连接数据库 source!");
                return FALSE;
            }
        }
        catch(_com_error e)
        {
            AfxMessageBox("不能连接数据库 error!");
            return FALSE;
        }3.Oracle 9i    _ConnectionPtr m_pConn;
        CString m_sConn="Provider=MSDAORA.1;Data Source=sode_192.168.3.9"; //使用
    ms连接库,sode为SID,192.168.3.9为机器ip
        m_pConn.CreateInstance("ADODB.Connection");
        try
        {
            HRESULT hr=m_pConn->Open((_bstr_t)m_sConn,"sodeUser","sodePw",adConnectUnspecified);    
            if (FAILED(hr))
            {
                AfxMessageBox("不能连接数据库 source!");
                return FALSE;
            }
        }
        catch(_com_error e)
        {
            AfxMessageBox("不能打开数据库 error!");
            return FALSE;
        }