急 Datagrid 无数据显示
我想显示ACCESS数据库里面的内容,怎么运行没显示呢,运行只显示 catch (_com_error)中的错误提示。我的数据库名称:City 表格名称:treeitem 我的代码如下:
StdAfx.h
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
access.cpp
BOOL Caccess::InitInstance()
{
AfxOleInit();//初始化COM库
AfxEnableControlContainer();
// 此程序只能运行一次,用互斥量来判断程序是否已运行
HANDLE m_hMutex=CreateMutex(NULL,TRUE, m_pszAppName);
if(GetLastError()==ERROR_ALREADY_EXISTS)
return FALSE;
//以下是连接access2000数据库。。。
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
m_pConnection->ConnectionTimeout=3;///设置超时时间为3秒
// hr = m_pConnection->Open(Filepath,"","",adModeUnknown);
hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=City.mdb;","","",adModeUnknown);
///连接数据库
}
}
catch(_com_error e)///捕捉异常
{
CString temp;
temp.Format("连接数据库错误信息:%s",e.ErrorMessage());
::MessageBox(NULL,temp,"提示信息",NULL);
return false;
}
return TRUE;
}
accessDlg.cpp
BOOL CaccessDlg::OnInitDialog()
{
CDialog::OnInitDialog();
_RecordsetPtr m_pRS;
_ConnectionPtr m_ptrConnection;
CString sql;
m_pRS = NULL;
sql="SELECT * FROM treeitem ";
try
{
m_pRS->CursorLocation = adUseClient;
m_pRS.CreateInstance("ADODB.Recordset");
m_pRS->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch (_com_error)
{
AfxMessageBox("打开数据库失败");
}
m_grid.SetCaption("City");
m_grid.SetRefDataSource(NULL);
m_grid.SetRefDataSource( (LPUNKNOWN) m_pRS );
m_grid.Refresh();
UpdateData(FALSE);
}