我做了一个 vc6.0 访问 access 的程序,在本机运行正常,可是把做好的 程序及 mdb 文件复制到其它机子上,运行不了,显示 m_pConnection.CreateInstance("ADODB.Connection"); 创建不成功
注明:其它机子没安装 vc6.0//代码是这样的在 stdafx.h 中#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")在 CTest01App 定义中public: _ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset; char ProFolder[256]; // 应用程序所在的文件夹在 InitInstance() 中BOOL CTest01App::InitInstance()
{
AfxEnableControlContainer(); ///////////////////下面得到应用程序所在的路径/////////////////// ::GetModuleFileName(NULL,ProFolder,256);
int len=strlen(ProFolder);
for(int i=len-1;i>0;i--)
if(ProFolder[i]=='\\')
{
ProFolder[i]=0; break;
}
//初始化com环境
::CoInitialize(NULL);
//创建连接对象和记录集对象
HRESULT hr;
try
{
AfxOleInit();
hr = m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象
if(SUCCEEDED(hr))
{ CString databasename=ProFolder;
databasename+="\\cjgl.mdb";
CString connStr;
connStr.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",databasename); hr = m_pConnection->Open(_bstr_t(connStr),"","",adModeUnknown);///连接无密码数据库
}
else
{
AfxMessageBox("m_pConnection.CreateInstance('ADODB.Connection') 创建失败");
return FALSE;
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
if (FAILED(m_pRecordset.CreateInstance(__uuidof(Recordset))))
{
AfxMessageBox("Create Instance failed!");
return FALSE;
}
..................
return TRUE;
}
access数据库vc6.0
注明:其它机子没安装 vc6.0//代码是这样的在 stdafx.h 中#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")在 CTest01App 定义中public: _ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset; char ProFolder[256]; // 应用程序所在的文件夹在 InitInstance() 中BOOL CTest01App::InitInstance()
{
AfxEnableControlContainer(); ///////////////////下面得到应用程序所在的路径/////////////////// ::GetModuleFileName(NULL,ProFolder,256);
int len=strlen(ProFolder);
for(int i=len-1;i>0;i--)
if(ProFolder[i]=='\\')
{
ProFolder[i]=0; break;
}
//初始化com环境
::CoInitialize(NULL);
//创建连接对象和记录集对象
HRESULT hr;
try
{
AfxOleInit();
hr = m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象
if(SUCCEEDED(hr))
{ CString databasename=ProFolder;
databasename+="\\cjgl.mdb";
CString connStr;
connStr.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",databasename); hr = m_pConnection->Open(_bstr_t(connStr),"","",adModeUnknown);///连接无密码数据库
}
else
{
AfxMessageBox("m_pConnection.CreateInstance('ADODB.Connection') 创建失败");
return FALSE;
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
if (FAILED(m_pRecordset.CreateInstance(__uuidof(Recordset))))
{
AfxMessageBox("Create Instance failed!");
return FALSE;
}
..................
return TRUE;
}
access数据库vc6.0
从开发机把ADO拷贝过去,用regsvr32注册下。
不用ado 用mfc odbc类
替换目标机子上的 msado15.dll
再到目标机子上 c:\program files\common files\system\ado\目录下运行
regsvr32 msado15.dll
显示 msado15.dll 非可执行程序,无效,是什么原因
将解压的msado15.dll文件剪切放在以下目录
C:\Program Files\Common Files\System\ado
然后运行注册ADO:
1.单击“开始”->“运行”
2.输入 REGSVR32 "C:\Program Files\Common Files\System\ado\msado15.dll"
3.单击“确定”按钮 提示成功
结果还是运行不了
显示 m_pConnection.CreateInstance("ADODB.Connection"); 创建不成功