我初学ADO请多多帮忙,我系统是windows 2000,用Access 2000建了一个db3.mdb库(有一表welfare),db3.mdb存在"我的文档"里。我用VC的MFC向导建了一个单文档工程ADOmc(CADOmcView基于CListView),在stdafx.h里的最后一个#include的下一行加了#import "D:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF"),在BOOL CADOmcApp::InitInstance()的第一行加了AfxOleInit()函数。之后我在void CADOmcView::OnInitialUpdate()
函数里连库在CListView::OnInitialUpdate();后我添加了如下代码:
HRESULT hr;
try{
hr = m_connection.CreateInstance(_uuidof(Connection));
if(SUCCEEDED(hr))
hr = m_connection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db3.mdb","","",adModeUnknown);
//出错(未指定错误),换为adModeShareDenyNone下面m_recordset->Open出错
//(Unknown error 0x800A0E81)
if(SUCCEEDED(hr))
hr = m_recordset.CreateInstance(_uuidof(Recordset));
if(SUCCEEDED(hr))
hr = m_recordset->Open("select * from welf",
_variant_t((IDispatch *)m_connection,true),//换成
//m_connection.GetInterfacePtr()或"Provider=Microsoft.Jet.OLEDB.4.0;Data
//Source=db3.mdb"也都出错 adOpenDynamic,adLockOptimistic,adCmdText);//换成adOpenDynamic,
//adLockOptimistic, adCmdText还出错
if(SUCCEEDED(hr)) MessageBox("good");
else MessageBox("bad");
}
catch (_com_error &e){
MessageBox(e.ErrorMessage());
}
其中注释反映了我程序出的错误,对于m_connection->Open用adModeUnknown就直接出错(消息框"未指定错误",我看网上的例子都这么设),用adModeShareDenyNone下面m_recordset->Open出错(消息框"Unknown error 0x800A0E81"),能帮我看看是怎么回事吗?(是我落了什么步骤或系统有问题吗?)谢谢了!
函数里连库在CListView::OnInitialUpdate();后我添加了如下代码:
HRESULT hr;
try{
hr = m_connection.CreateInstance(_uuidof(Connection));
if(SUCCEEDED(hr))
hr = m_connection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db3.mdb","","",adModeUnknown);
//出错(未指定错误),换为adModeShareDenyNone下面m_recordset->Open出错
//(Unknown error 0x800A0E81)
if(SUCCEEDED(hr))
hr = m_recordset.CreateInstance(_uuidof(Recordset));
if(SUCCEEDED(hr))
hr = m_recordset->Open("select * from welf",
_variant_t((IDispatch *)m_connection,true),//换成
//m_connection.GetInterfacePtr()或"Provider=Microsoft.Jet.OLEDB.4.0;Data
//Source=db3.mdb"也都出错 adOpenDynamic,adLockOptimistic,adCmdText);//换成adOpenDynamic,
//adLockOptimistic, adCmdText还出错
if(SUCCEEDED(hr)) MessageBox("good");
else MessageBox("bad");
}
catch (_com_error &e){
MessageBox(e.ErrorMessage());
}
其中注释反映了我程序出的错误,对于m_connection->Open用adModeUnknown就直接出错(消息框"未指定错误",我看网上的例子都这么设),用adModeShareDenyNone下面m_recordset->Open出错(消息框"Unknown error 0x800A0E81"),能帮我看看是怎么回事吗?(是我落了什么步骤或系统有问题吗?)谢谢了!
CString m_sConn="Provider=Microsoft.Jet.OLEDB.4.0.1;Data Source=d:\\db1.mdb";
m_pConn.CreateInstance("ADODB.Connection");
try
{
HRESULT hr=m_pConn->Open((_bstr_t)m_sConn,"","",adConnectUnspecified);
if (FAILED(hr))
{
AfxMessageBox("不能连接数据库 source!");
return FALSE;
}
}
catch(_com_error e)
{
AfxMessageBox("不能连接数据库 error!");
return FALSE;
}
CString m_sConn="Provider=Microsoft.Jet.OLEDB.4.0.1;Data Source=d:\\db1.mdb";