连接access数据库异常 代码:80004003 信息:无效指针
连接access数据库错误 代码:80004003 信息:无效指针
是这样的 我的程序是在XP SP3 32bit机器上编译的 打包发布后在别的大多数机器上都可以正常运行 包括Win7,Win8.但最近发现在一台Win7 64bit的机器上运行不了(前段时间这台机器也可以运行这个程序).看错误信息是发生在连接access数据库的位置。连接代码如下
BOOL CTestApp::OnConnectDB()
{
try
{
// 打开本地Access库
CString sqlstr;
sqlstr.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False;Jet OLEDB:DataBase Password=888888",apppath+"\\Data\\test.mdb");
m_pConnection->Open((LPCSTR)sqlstr,"","",adModeUnknown);
}
catch(_com_error e)
{
CString strErro;
strErro.Format("连接数据库失败!代码:%08X 信息:%s 描述:%s\r\n", e.Error(), e.ErrorMessage(), e.Description());
AfxMessageBox(strErro);
return FALSE;
}
return TRUE;
}
这是连接access数据库的函数 调用函数之前已经初始化了Com库。
然后报错的内容是
---------------------------
连接数据库失败!代码:80004003 信息:无效指针 描述:
---------------------------
确定
---------------------------
在网上查Microsoft.Jet.OLEDB.4.0引擎已经不能在64bit机器上使用了 但是明明前段时间还能运行的好好的 不知道突然就连接不上了
我现在猜测是这台机器的access环境被破坏了 但是具体不知道是何原因,恳请各位大神赐教。
------解决方案--------------------
那就把ado文件带上一起发布看看
------解决方案--------------------
所有的字串加_bstr_t
m_pConnection->Open(_bstr_t(sqlstr_,_bstr_t(""),_bstr_t(""),adModeUnknown);
------解决方案--------------------
m_pConnection->Open(_bstr_t(sqlstr_),_bstr_t(""),_bstr_t(""),adModeUnknown);
------解决方案--------------------
不光拷贝ADO动态库,还需要用管理员权限运行命令提示符,用RegSvr32注册ADO组件。
------解决方案--------------------
m_pConnection->Open接受的参数类型是BSTR,原则上是需要加的,但是新的类封装包含了char*到BSTR的转换,因此,在许多场合下,就不一定要加了。
如果是因为注册的问题,应该使用MDAC_TYP2.8安装
是这样的 我的程序是在XP SP3 32bit机器上编译的 打包发布后在别的大多数机器上都可以正常运行 包括Win7,Win8.但最近发现在一台Win7 64bit的机器上运行不了(前段时间这台机器也可以运行这个程序).看错误信息是发生在连接access数据库的位置。连接代码如下
BOOL CTestApp::OnConnectDB()
{
try
{
// 打开本地Access库
CString sqlstr;
sqlstr.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False;Jet OLEDB:DataBase Password=888888",apppath+"\\Data\\test.mdb");
m_pConnection->Open((LPCSTR)sqlstr,"","",adModeUnknown);
}
catch(_com_error e)
{
CString strErro;
strErro.Format("连接数据库失败!代码:%08X 信息:%s 描述:%s\r\n", e.Error(), e.ErrorMessage(), e.Description());
AfxMessageBox(strErro);
return FALSE;
}
return TRUE;
}
这是连接access数据库的函数 调用函数之前已经初始化了Com库。
然后报错的内容是
---------------------------
连接数据库失败!代码:80004003 信息:无效指针 描述:
---------------------------
确定
---------------------------
在网上查Microsoft.Jet.OLEDB.4.0引擎已经不能在64bit机器上使用了 但是明明前段时间还能运行的好好的 不知道突然就连接不上了
我现在猜测是这台机器的access环境被破坏了 但是具体不知道是何原因,恳请各位大神赐教。
------解决方案--------------------
那就把ado文件带上一起发布看看
------解决方案--------------------
所有的字串加_bstr_t
m_pConnection->Open(_bstr_t(sqlstr_,_bstr_t(""),_bstr_t(""),adModeUnknown);
------解决方案--------------------
m_pConnection->Open(_bstr_t(sqlstr_),_bstr_t(""),_bstr_t(""),adModeUnknown);
------解决方案--------------------
不光拷贝ADO动态库,还需要用管理员权限运行命令提示符,用RegSvr32注册ADO组件。
------解决方案--------------------
m_pConnection->Open接受的参数类型是BSTR,原则上是需要加的,但是新的类封装包含了char*到BSTR的转换,因此,在许多场合下,就不一定要加了。
如果是因为注册的问题,应该使用MDAC_TYP2.8安装