最近开发需要用上 dbgril 也就是VC 6中 自带的那个微软的 控件 CDataGrid 。上网搜索了N + N 天,就是没一个入手的资料,郁闷,难道都是高手中的高手,可是我都没入门。MSDN 没有,帮助目录中也没有基本使用方法,走了很多弯路啊。终于搞定了入门,现在公布出来大家共享。 首先,要能正常使用这个 dbgril 你在建立工程的时候一定要勾上 使用 ACTIVEX 控件这项,否则死活就是不显示,连初始化都不行,我折腾了三天才明白(我有个开发习惯,用不上的东西,建立工程的时候全部都去掉),后来想想,真是傻了,这个不是MFC标准控件,唉。。。。浪费了无数脑细胞。
第二,与ADO的连接,网上有 N 多例子啊,全是连接mdb的,或者在函数内直接连接数据库。作为一个大型软件开发,肯定数据库在一开始就连接好了,全工程调用连接啊,哪有每个函数或者功能连接数据库啊。我一般都在 CXXXXAPP中 初始化的时候就连接后了数据库,经过我多次试验,翻阅了整个MSDN 和 ADO终于搞定连接。如下: 1,我在 BOOL CManageApp::InitInstance() 函数中,就定义和连接上了SQL数据库 _ConnectionPtr m_pConnection; 2,在对应使用DBGRIL
的类中,定义了连接 _RecordsetPtr m_pRecordset; 3,在构建该类中,初始化: m_pRecordset.CreateInstance(__uuidof(Recordset)); m_pRecordset->PutCursorLocation(adUseClient); /////这句非常重要,否则老提示没有什么bookmark 4,在需要的地方打开表并连接上 BSTR text; CString str="select * from t"; text= str.AllocSysString();
try { m_pRecordset->Open(text, // 查询DemoTable表中所有字段 theApp.m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针 adOpenDynamic, adLockOptimistic, adCmdText); ///////////////////////////////////////////// try { m_ctrlDG.SetRefDataSource((LPUNKNOWN)m_pRecordset->GetDataSource());////这句我折腾了很久才知道
} catch(_com_error *e) { AfxMessageBox(e->ErrorMessage()); } /////////////////////////////////////////////// } catch(_com_error *e) { AfxMessageBox(e->ErrorMessage()); } ::SysFreeString(text);5,在解析该类的时候,关闭连接 m_pRecordset->Close(); m_pRecordset = NULL;好了,DBGRIL
动态连接数据库完毕,呵呵,其他用法,我正在研究,我也不会,不过,剩下的应该都比较简单了,入门了就水道渠成。
关于 dbgril 与ado
最新推荐文章于 2026-08-23 22:45:00 发布
本文介绍如何在VC6中使用DBGrid控件,并实现与数据库的动态连接。主要内容包括设置工程以启用ACTIVEX控件、与ADO进行连接的方法、以及如何在不同阶段初始化和关闭数据库连接。

223

被折叠的 条评论
为什么被折叠?



