
Visual studio 2010 开发的ACCESS数据库访问程序部署到其他计算机时,不能打开数据库,请大侠指点!
我用visualstudio2010做了一个简单的access数据库访问程序,发布后拷到其他计算机上(暂称为目标机),不能运行。我已经在目标机上安装了C/C++运行时态库...
我用visual studio 2010做了一个简单的access数据库访问程序,发布后拷到其他计算机上(暂称为目标机),不能运行。我已经在目标机上安装了C/C++运行时态库,并且把mfc100.dll, mfc100u.dll, atl100.dll, msvcr100.dll这些DLL都拷到了应用程序目录下,但是执行的时候还是弹出错误,不能打开数据库连接。而后我到网上下了vc6.0版本的access访问例子,直接到目标机上解压运行,能正常访问数据库;但是在我本机编译过,再拷贝到目标机上后,就打不开数据库了,请问,我本机上哪些因素影响了access数据库的访问?我该怎么解决这个问题?
补充下:我本机开发用的是windows xp sp3, 目标机(部署机)也是windows xp sp3; 程序是基于MFC的c++程序。
代码描述:
在stdafx.h中加入:
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")
在C***APP类中得InitInstance()函数中加入:
// 初始化COM,创建ADO连接等操作
AfxOleInit();
m_pConnection.CreateInstance(_T("ADODB.Connection"));
try
{
// 打开本地Access库Demo.mdb,获取绝对路径
CString connectionStr = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=") + GetCurrentPath() + _T("\\")+_T("Demo.mdb");
m_pConnection->Open(_bstr_t(connectionStr),_bstr_t(_T("")),_bstr_t(_T("")),adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(_T("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!"));
AfxMessageBox(e.Description());
return FALSE;
}
AfxMessageBox(_T("2011-9-13-1807-数据库加载成功!"));
在目标机上运行时,弹出错误如下:
在线等大侠解答!不胜感激! 展开
补充下:我本机开发用的是windows xp sp3, 目标机(部署机)也是windows xp sp3; 程序是基于MFC的c++程序。
代码描述:
在stdafx.h中加入:
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")
在C***APP类中得InitInstance()函数中加入:
// 初始化COM,创建ADO连接等操作
AfxOleInit();
m_pConnection.CreateInstance(_T("ADODB.Connection"));
try
{
// 打开本地Access库Demo.mdb,获取绝对路径
CString connectionStr = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=") + GetCurrentPath() + _T("\\")+_T("Demo.mdb");
m_pConnection->Open(_bstr_t(connectionStr),_bstr_t(_T("")),_bstr_t(_T("")),adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(_T("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!"));
AfxMessageBox(e.Description());
return FALSE;
}
AfxMessageBox(_T("2011-9-13-1807-数据库加载成功!"));
在目标机上运行时,弹出错误如下:
在线等大侠解答!不胜感激! 展开
4个回答
展开全部
“我本机上哪些因素影响了access数据库的访问?我该怎么解决这个问题?”:
数据库连接失败的原因:
首先你要看你驱动是否也转移了,然后你要看你的另外台机子上是否有access数据库,因为有些系统没有access数据库,需要下载一个,而且要把accesss数据库权限改了,比如在系统盘的window下面的temp中改下或者从数据库所在的文件中设置下属性中的安全模块
数据库连接失败的原因:
首先你要看你驱动是否也转移了,然后你要看你的另外台机子上是否有access数据库,因为有些系统没有access数据库,需要下载一个,而且要把accesss数据库权限改了,比如在系统盘的window下面的temp中改下或者从数据库所在的文件中设置下属性中的安全模块
追问
我用的时ADO访问方式,驱动是msado15.dll。数据库文件和msado15.dll,还要程序,我都一起拷贝到目标机上,还是不能执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Demo.mdb是否在当前路径下:
是否把数据库文件放到指定文件夹下了?
是否把数据库文件放到指定文件夹下了?
更多追问追答
追问
我已经把数据库放到指定目录了,和.exe文件同一路径
追答
是不是放debug下去了?放cpp下
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-09-14
展开全部
截图中的“数据库连接失败,确认数据库Demo.mdb是否在当前路径下”,只是你自己写的提示信息,具体软件报的什么错是不清楚的,AfxMessageBox(e.Description());中错误提示是什么?另外你跟踪一下看看connectionStr 赋值后的内容是什么?贴上来看看
追问
Afxmessagebox(e.Description)弹出了对话框,但是什么字符都没有。
追答
我对c++语法不大了解,呵呵,是不是e的异常类型声明的不对?另外把Afxmessagebox(e.Description)提前一行看看,不知道错误提示内容,很难判断。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看看是不是目标机器上没有Acesse软件
追问
目标机器上也装了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |