大家好,我按照网上的方法实现连接ACCESS数据库,可是数据库一直连接失败,下面是部分程序,请大家帮我看看程序到底哪里有错。
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,// 因为它有时会经常出现一些意想不到的错误。try                 

// 打开本地Access库Demo.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\Users\admin\Desktop\Database1.accdb;Persist Security Info=False","","",adModeUnknown);//连接字符串是我通过字符串生成工具生成的。
}
catch(_com_error e)
{
    AfxMessageBox("数据库连接失败!");
    return FALSE;
}// ——关闭一个库连接。如果连接状态有效,则用Close方法关闭它并赋于它空值。代码如下所示:
if(m_pConnection->State)m_pConnection->Close();
m_pConnection= NULL;access数据库

解决方案 »

  1.   

    // 打开本地Access库Demo.mdb
    m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\Users\admin\Desktop\Database1.accdb;Persist Security Info=False","","",adModeUnknown);
    你不是要打开DEMO.MDB吗?  下面的代码是可以的
    CoInitialize(NULL);  //初始化COM库    _ConnectionPtr pConn;
        _RecordsetPtr  pRecordset;
    CString kk;    pConn.CreateInstance(__uuidof(Connection));
        pRecordset.CreateInstance("ADODB.Recordset");    _bstr_t connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=****";//**** == 数据库名(放在Debug目录下)    pConn->Open(connStr, "", "", adModeUnknown);
    kk=="...";  //access语句
        pRecordset->Open(_bstr_t(kk), 
                    pConn.GetInterfacePtr(), 
                    adOpenStatic, adLockOptimistic, adCmdText);
    return pRecordset;
      

  2.   

    Quote: 引用 2 楼 a556231230 的回复:

    // 打开本地Access库Demo.mdb
    m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\Users\admin\Desktop\Database1.accdb;Persist Security Info=False","","",adModeUnknown);
    你不是要打开DEMO.MDB吗?  
    我打错了,我要打开的就是data1.accdb,我按照你的代码试了出错了,产生了中断,test.exe 中的 0x7655c41f 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0038f7b4 处的 _com_error。下面是我按照你说的改的代码 CoInitialize(NULL);  //初始化COM库    _ConnectionPtr pConn;
        _RecordsetPtr  pRecordset;
    CString kk;    pConn.CreateInstance(__uuidof(Connection));
        pRecordset.CreateInstance("ADODB.Recordset");    _bstr_t connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\ruanjian\visual sdudio 2010 professional\project\test\Debug\da;Persist Security Info=False";//**** == 数据库名(放在Debug目录下)    pConn->Open(connStr, "", "", adModeUnknown);
    kk=="select * from 表1";  //access语句
        pRecordset->Open(_bstr_t(kk), 
                    pConn.GetInterfacePtr(), 
                    adOpenStatic, adLockOptimistic, adCmdText);
    return pRecordset;
      

  3.   

    说是产生了_com_error.请问该如何解决?
      

  4.   

    先用udl文件得到连接路径,很可能是你的路径出了问题
      

  5.   


    我是用的ACCESS连接字符串生成工具产生的连接路径,不知道这个对不对。
      

  6.   


    我是用的ACCESS连接字符串生成工具产生的连接路径,不知道这个对不对。
    到数据库中测试一下
      

  7.   


    我是用的ACCESS连接字符串生成工具产生的连接路径,不知道这个对不对。
    到数据库中测试一下
    请问怎么测试?
      

  8.   

    我测试连接成功了,可是在MFC中还是说连接失败。
      

  9.   

    我测试连接成功了,可是在MFC中还是说连接失败。
    你用这玩意执行一下sql语句看行不行
      

  10.   

    我测试连接成功了,可是在MFC中还是说连接失败。
    你用这玩意执行一下sql语句看行不行
    执行结果是这样的。但是我在MFC中并还没有开始执行SQL的语句,我还只是建立连接,在建立连接这步出错。