::CoInitialize(NULL);
m_pConnection.CreateInstance(_uuidof(Connection));
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\HistoryFault.mdb", "", "", adModeUnknown);
}
catch (_com_error e)
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return FALSE;
}
3 个解决方案
#1
m_pConnection.CreateInstance 要判断返回值是否是 S_OK
可以在其它机器上安装VS的 远程调试器 进行远程调试
可以在其它机器上安装VS的 远程调试器 进行远程调试
#2
在64位Windows下:
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe
在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe
在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe
#3
问题解决了,要用相对路径连接access,
CString sPath,m_strPath;
GetModuleFileName(NULL, sPath.GetBufferSetLength(MAX_PATH + 1), MAX_PATH);
sPath.ReleaseBuffer();
int len = sPath.ReverseFind('\\') + 1;
m_strPath = sPath.Left(len);
CString strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_strPath + "data\\" + "HistoryFault.mdb";
try
{
m_pConnection->Open(_bstr_t(strConnection),"", "", adModeUnknown);
}
但是生成的exe在32位系统上运行界面变大了,下面部分被桌面挡住了,搜了一下要配置VS的平台,但是我的没有x86选项,只有x64和arm,这个怎么解决
CString sPath,m_strPath;
GetModuleFileName(NULL, sPath.GetBufferSetLength(MAX_PATH + 1), MAX_PATH);
sPath.ReleaseBuffer();
int len = sPath.ReverseFind('\\') + 1;
m_strPath = sPath.Left(len);
CString strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_strPath + "data\\" + "HistoryFault.mdb";
try
{
m_pConnection->Open(_bstr_t(strConnection),"", "", adModeUnknown);
}
但是生成的exe在32位系统上运行界面变大了,下面部分被桌面挡住了,搜了一下要配置VS的平台,但是我的没有x86选项,只有x64和arm,这个怎么解决
#1
m_pConnection.CreateInstance 要判断返回值是否是 S_OK
可以在其它机器上安装VS的 远程调试器 进行远程调试
可以在其它机器上安装VS的 远程调试器 进行远程调试
#2
在64位Windows下:
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe
在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe
在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe
#3
问题解决了,要用相对路径连接access,
CString sPath,m_strPath;
GetModuleFileName(NULL, sPath.GetBufferSetLength(MAX_PATH + 1), MAX_PATH);
sPath.ReleaseBuffer();
int len = sPath.ReverseFind('\\') + 1;
m_strPath = sPath.Left(len);
CString strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_strPath + "data\\" + "HistoryFault.mdb";
try
{
m_pConnection->Open(_bstr_t(strConnection),"", "", adModeUnknown);
}
但是生成的exe在32位系统上运行界面变大了,下面部分被桌面挡住了,搜了一下要配置VS的平台,但是我的没有x86选项,只有x64和arm,这个怎么解决
CString sPath,m_strPath;
GetModuleFileName(NULL, sPath.GetBufferSetLength(MAX_PATH + 1), MAX_PATH);
sPath.ReleaseBuffer();
int len = sPath.ReverseFind('\\') + 1;
m_strPath = sPath.Left(len);
CString strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_strPath + "data\\" + "HistoryFault.mdb";
try
{
m_pConnection->Open(_bstr_t(strConnection),"", "", adModeUnknown);
}
但是生成的exe在32位系统上运行界面变大了,下面部分被桌面挡住了,搜了一下要配置VS的平台,但是我的没有x86选项,只有x64和arm,这个怎么解决