急 Datagrid 无数据显示

wacslxj1314 2008-12-16 10:36:01
我想显示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);
}
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wacslxj1314 2009-01-09
  • 打赏
  • 举报
回复
谢谢各位的帮忙
chenghu19860527 2008-12-20
  • 打赏
  • 举报
回复
shakaqrj说的对
shakaqrj 2008-12-18
  • 打赏
  • 举报
回复
m_pRS->CursorLocation = adUseClient;
m_pRS.CreateInstance("ADODB.Recordset");

这里当然错喽
两者顺序颠倒一下
ilovedrv 2008-12-18
  • 打赏
  • 举报
回复
{
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("打开数据库失败");
}

上面打开有问题啊

_CommandPtr pCommand;
pCommand.CreateInstance (__uuidof (Command));
pCommand->ActiveConnection = m_pConn; // Formerly opened connection
// pointer
pCommand->CommandText = "Select * From Student";

_RecordsetPtr pRecordset;
pRecordset.CreateInstance (__uuidof (Recordset));
pRecordset->CursorLocation = adUseClient;
pRecordset->Open ( (IDispatch *) pCommand, vtMissing, adOpenStatic,adLockBatchOptimistic, adCmdUnknown);

看下这篇文章

http://www.codeproject.com/KB/database/simpleado.aspx

wacslxj1314 2008-12-18
  • 打赏
  • 举报
回复
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_pRS->CursorLocation = adUseClient;这句就执行catch (_com_error)中的报错,不加那句运行的时候就弹出严重错误。
vcdata 2008-12-16
  • 打赏
  • 举报
回复
看你代码要很多 心事 你可以在这段加 断点 再调试 看看是那句出问题
这样你可以自己解决问题 或 把有问题的那句 给我们看
wacslxj1314 2008-12-16
  • 打赏
  • 举报
回复
希望哪位高人能帮忙指点一下,感激不尽

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧