采用ADO方式连接ACCESS数据库时,win7运行正常,XP和Windows2008运行错误

C++语言 码拜 6年前 (2015-05-11) 901次浏览 0个评论

采用ADO方式连接ACCESS数据库时,相同的应用程序在win7下面运行没有问题,但是在xp下创建connection的实例就失败,而在Windows20008版本下,执行open时失败,您看这主要是什么原因。
 我在win7下采用VS2008编写的程序,其它机器上都没有安装VS2008.
代码:

hr = m_pConnection.CreateInstance(“ADODB.Connection”);//XP下运行错误,win7和win2008运行正确
    if(SUCCEEDED(hr)){
        MessageBox(L”ACEESS create succeed”,L”DEMO”,MB_OK);
//设置连接字符串   
//CString strConnect=L”DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=;DBQ=biodata.mdb;”;
CString strConnect=L”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=biodata.mdb;”;
//使用Open方法连接数据库   
try{
hr = m_pConnection->Open((_bstr_t)strConnect,””,””,adModeUnknown);//win2008错误
if(SUCCEEDED(hr)){
   MessageBox(L”ACEESS connection succeed”,L”DEMO”,MB_OK);
}else{
  MessageBox(L”ACEESS ACEESS connection failed”,L”DEMO”,MB_OK);
return -1;
}
}catch(_com_error e){
CString errormessage;
errormessage.Format(L”连接数据库失败!\r\n错误信息:%s”,e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息 
 MessageBox(L”ACEESS ACEESS connection failed2″,L”DEMO”,MB_OK);
return -1;
}
}else{
    MessageBox(L”ACEESS create failed”,L”DEMO”,MB_OK);
    return -1;
}

30分
WIN7下编译的????WIN7的ado15.dll与其他系统不兼容!拷贝个XP的ado15.dll到WIN7下在编译,或者直接把工程移到XP下重新编译一次;我也遇到过这个问题
10分
注意64位和32位操作系统下配置ADO连接的不同。
VS2008运行库?  你网上去下一个,丢system32下试试
引用 1 楼 YHuiStudy 的回复:

WIN7下编译的????WIN7的ado15.dll与其他系统不兼容!拷贝个XP的ado15.dll到WIN7下在编译,或者直接把工程移到XP下重新编译一次;我也遇到过这个问题

嗯,是这个问题,好像从vista开始就对msado15.dll进行了扩展,悲催的是前后不兼容。

引用 2 楼 zhao4zhong1 的回复:

注意64位和32位操作系统下配置ADO连接的不同。

64位和32位操作系统下的配置方式也不同啊,没考虑到这,但是连接ACCESS2003和ACCESS2007数据库的配置方式是不同的,真是无语了,要是采用这种方式开发应用程序的话,得需要多少版本啊   

我也遇到了这个问题,先是用VC6在xp系统下做的,开始时运行得好好的,在win7上也运行得好好的。后来在其他的类中添加了变量或者函数后,就出现和楼主一样的问题了,但是修改前的还是能好好运行,修改后的在win7上面运行没问题。没法子又在vc2010下做了一次,结果还是一样,在win7上可以运行,到xp下又出现相同的错误,实在是找不到原因啊,有哪位大神知道的,帮下忙吧!
楼主,这个问题你解决了吗?
从xp上拷贝 ado目录到win7 上,备份win7 c:\program files\common files\system\ado 文件夹。
然后把xp中复制过来的拷贝过去。重新编译项目,就可以在xp 上运行了。
引用 8 楼 liurui703 的回复:

从xp上拷贝 ado目录到win7 上,备份win7 c:\program files\common files\system\ado 文件夹。
然后把xp中复制过来的拷贝过去。重新编译项目,就可以在xp 上运行了。

按照你的回答真的成功了,帮大忙了,谢谢

引用 8 楼 liurui703 的回复:

从xp上拷贝 ado目录到win7 上,备份win7 c:\program files\common files\system\ado 文件夹。
然后把xp中复制过来的拷贝过去。重新编译项目,就可以在xp 上运行了。

的确解决了,谢谢提供的方案,真蛋疼,不过我后面都是用sqlite3数据库。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明采用ADO方式连接ACCESS数据库时,win7运行正常,XP和Windows2008运行错误
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!