我电脑是64位的,新装了2010,数据库我还是用的老的Access2003,连接代码如下://连接数据库
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));
try                 
{
// 打开本地Access库Demo.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=demo.mdb",
"","",adModeUnknown);
}
catch(_com_error e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description()); AfxMessageBox(_T("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!"));
return FALSE;
}
我数据库放在与头文件和.CPP 同一文件夹下。
报告错误是“找不到可安装的ISAM”,请问这个问题怎么解决。我将数据库放在Debug下也是报同样的错误。
我把数据库路径DataSource=demo.mdb改写成绝对路径,还是报同样的错误。请指教,谢谢!

解决方案 »

  1.   

    连接串改一下看看_bstr_t connStr=L"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=true;Data Source=D:\\Demo.mdb;Jet OLEDB:Database Password=";或bstr_t connStr=L"Driver={Microsoft Access Driver (*.mdb)};dbq=D:\\Demo.mdb;pwd=";
      

  2.   

    这个连接串的要求比较严格,建议使用楼上的字符串试试!Data Source中间有个空格,少了就连不上!分号之后没有空格,多了也连不上!
      

  3.   

    谢谢,
    我数据库没有密码,我试探把语句改为
    _bstr_t connStr=L"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=true;Data Source=Demo.mdb";没有报错了。我把我的改为
    m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=true;DataSource=Demo.mdb","","",adModeUnknown);还是报错
    但参照你的方法吗,改为下面语句就好了
    _bstr_t connStr=L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb";
    m_pConnection->Open(connStr,"","",adModeUnknown);
    请问什么原因?
      

  4.   

    问题找到了,就是Data Source中间的空格掉了,谢谢!