CRecordset对象执行MoveFirst时候报错:Assertion Failed!File:afxwin1.inl line:22

wfxyjx 2011-03-19 10:26:03
做了一个ODBC操作ACCESS注册表的程序,编译链接都没错误,而且程序之前的读取是没有问题的,但是在执行MoveFirst函数时候报错:Assertion Failed!File:afxwin1.inl line:22.忽略后还会出现错误:Debug Assertion Failed! File:dbcore.cpp Line:66 求教各路大神~!!1


BOOL ODBCConnect(CString &strDBFile)
{
CString strConnect;
strConnect.Format(_T("ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};UID=admin;PWD=admin;DBQ=%s"), strDBFile);

CDatabase db;
if(db.Open(NULL, FALSE, FALSE, strConnect))
{
int iCounter = 0;
//连接数据库成功
cout << "数据库已经连接陈功!" << endl;
CRecordset rs(&db);
CString strSql;
strSql = _T("select * from t_student"); //SQL语句
rs.Open(CRecordset::forwardOnly,strSql); //执行Sql语句(可添加 删除 查询等)
if(rs.IsOpen())
{
cout << "记录集已开启" << endl;
// CDBVariant variant;
CString variant;
// rs.MoveFirst();
cout << "已移动到首位!" << endl;
while(!rs.IsEOF())
{
//读取记录
cout << "开始读取" << endl;
rs.GetFieldValue((short)0, variant);
cout << variant;
rs.GetFieldValue((short)1,variant);
cout << "\t" << variant;
rs.MoveNext();

}
if (rs.IsEOF())
{
rs.MoveFirst();
}
}

rs.Close();
db.Close();
return TRUE;
}

return FALSE;
}
...全文
473 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwfgdlc 2011-03-20
  • 打赏
  • 举报
回复

BOOL ODBCConnect(CString &strDBFile)
{
CString strConnect;
strConnect.Format(_T("ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};UID=admin;PWD=admin;DBQ=%s"), strDBFile);

CDatabase db;
try
{
if(db.OpenEx(strConnect))
{
int iCounter = 0;
//连接数据库成功
cout << "数据库已经连接陈功!" << endl;
CRecordset rs(&db);
CString strSql;
strSql = _T("select * from t_student"); //SQL语句
rs.Open(CRecordset::snapshot,strSql); //执行Sql语句(可添加 删除 查询等)
if(rs.IsOpen())
{
cout << "记录集已开启" << endl;
// CDBVariant variant;
CString variant;
// rs.MoveFirst();
cout << "已移动到首位!" << endl;
while(!rs.IsEOF())
{
//读取记录
cout << "开始读取" << endl;
rs.GetFieldValue((short)0, variant);
cout << variant;
rs.GetFieldValue((short)1,variant);
cout << "\t" << variant;
rs.MoveNext();

}
if (rs.IsEOF())
{
rs.MoveFirst();
}
}
}catch(CDBException &e)
{
e.ReportError();
}

rs.Close();
db.Close();
return TRUE;
}

return FALSE;
}
zwfgdlc 2011-03-20
  • 打赏
  • 举报
回复

if(db.Open(NULL, FALSE, FALSE, strConnect))

这句错了,换成

if(db.OpenEx(strConnect))
zwfgdlc 2011-03-20
  • 打赏
  • 举报
回复

virtual BOOL Open(
LPCTSTR lpszDSN,
BOOL bExclusive = FALSE,
BOOL bReadOnly = FALSE,
LPCTSTR lpszConnect = _T("ODBC;"),
BOOL bUseCursorLib = TRUE
);


virtual BOOL OpenEx(
LPCTSTR lpszConnectString,
DWORD dwOptions = 0
);

两个函数是用法是不一样的。Open要先建立DSN,OpenEx直接用字符串连接。
wfxyjx 2011-03-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zwfgdlc 的回复:]
C/C++ code

BOOL ODBCConnect(CString &strDBFile)
{
CString strConnect;
strConnect.Format(_T("ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};UID=admin;PWD=admin;DBQ=%s"), strDBFile);

……
[/Quote]

非常非常感谢大神,一天半的纠结终于结束了!各种断言错误在换了openex函数后都消失了!我就不知道为什么自己当初看到openex函数后就没换下试试呢!否则就不用纠结至此了。

不过最后还想让大神解释一下,为什么用open是错的呢?我们的教材上用的就是open呢。
wfxyjx 2011-03-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zxhx 的回复:]
引用 8 楼 wfxyjx 的回复:

引用 3 楼 arong1234 的回复:
你的数据库不是空集我相信,但是记录集完全有可能由于某种原因是空集,先显示错误信息看看吧

引用 2 楼 wfxyjx 的回复:
引用 1 楼 zxhx 的回复:
如果记录集为空,是否还可以MoveFirst?俺看你的代码好像没加判断~
另外,最好看看具体错误是啥,加上:

C/C++ code
……
[/Quote]

哦,学习了。之前没用过try的说。不过我建的只是个Consle程序,不是MFC的。
zxhx 2011-03-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wfxyjx 的回复:]

引用 3 楼 arong1234 的回复:
你的数据库不是空集我相信,但是记录集完全有可能由于某种原因是空集,先显示错误信息看看吧

引用 2 楼 wfxyjx 的回复:
引用 1 楼 zxhx 的回复:
如果记录集为空,是否还可以MoveFirst?俺看你的代码好像没加判断~
另外,最好看看具体错误是啥,加上:

C/C++ code

try
{
//带测试code
……
[/Quote]
是StdAfx.h里面的,MFC向导建的项目一般都带~
wfxyjx 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 arong1234 的回复:]
你的数据库不是空集我相信,但是记录集完全有可能由于某种原因是空集,先显示错误信息看看吧

引用 2 楼 wfxyjx 的回复:
引用 1 楼 zxhx 的回复:
如果记录集为空,是否还可以MoveFirst?俺看你的代码好像没加判断~
另外,最好看看具体错误是啥,加上:

C/C++ code

try
{
//带测试code
}
catch(_com_error&……
[/Quote]

弱弱的问下,这个catch里面的_com_error类型是在哪里定义的啊?加上它编译不通过,因为未找到_com_error的定义。我的头文件是:
#include<afxdb.h>
#include<iostream.h>
#include <afx.h>
wfxyjx 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zxhx 的回复:]
网上别人说的,没试过:
据说是野指针导致的,在release下系统帮你解决了这个问题,但debug是报错的,打开"编译"->"配置"->"把里面除了release其他的选项全部删除,再重新build就可以了~
[/Quote]
这样做确实可以让程序不再显示这个出错对话框,但是实际上程序依然会出错,程序在显示了一行abnormal program termination时就退出了
wfxyjx 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zwfgdlc 的回复:]
客户端游标的问题


C/C++ code

rs.Open(CRecordset::forwardOnly,strSql);


改成

C/C++ code

rs.Open(CRecordset::snapshot,strSql);
[/Quote]
我觉得这样改应该有道理,但是改成任何非forwardOnly项,虽然编译链接通过,但是在执行到这一句时都会直接引发DEBUG ERROR出错提示框,导致程序中断退出
zwfgdlc 2011-03-19
  • 打赏
  • 举报
回复
客户端游标的问题


rs.Open(CRecordset::forwardOnly,strSql);

改成

rs.Open(CRecordset::snapshot,strSql);

zxhx 2011-03-19
  • 打赏
  • 举报
回复
网上别人说的,没试过:
据说是野指针导致的,在release下系统帮你解决了这个问题,但debug是报错的,打开"编译"->"配置"->"把里面除了release其他的选项全部删除,再重新build就可以了~
arong1234 2011-03-19
  • 打赏
  • 举报
回复
你的数据库不是空集我相信,但是记录集完全有可能由于某种原因是空集,先显示错误信息看看吧
[Quote=引用 2 楼 wfxyjx 的回复:]
引用 1 楼 zxhx 的回复:
如果记录集为空,是否还可以MoveFirst?俺看你的代码好像没加判断~
另外,最好看看具体错误是啥,加上:

C/C++ code

try
{
//带测试code
}
catch(_com_error&amp; e)
{
AfxMessageBox(e.Description());
}


空集自然是不可以的,这个程序是个试验品。但是那个数据库不是空集的。
[/Quote]
wfxyjx 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zxhx 的回复:]
如果记录集为空,是否还可以MoveFirst?俺看你的代码好像没加判断~
另外,最好看看具体错误是啥,加上:

C/C++ code

try
{
//带测试code
}
catch(_com_error& e)
{
AfxMessageBox(e.Description());
}
[/Quote]

空集自然是不可以的,这个程序是个试验品。但是那个数据库不是空集的。
zxhx 2011-03-19
  • 打赏
  • 举报
回复
如果记录集为空,是否还可以MoveFirst?俺看你的代码好像没加判断~
另外,最好看看具体错误是啥,加上:

try
{
//带测试code
}
catch(_com_error& e)
{
AfxMessageBox(e.Description());
}
MFC类目录及头文件 类 描述 头文件 CAnimateCtrl 自动化通用控件 afxcmn.h CArchive afx.h CArchiveException afx.h CArray afxtempl.h CAsyncMonikerFile 在ActiveX控件中提供对异步标记的支持 afxole.h CAsyncScoket 封装Windows Sockets API,参看CSocket afxsock.h CBitmap afxwin.h CBitmapButton afxext.h CBrush afxwin.h CButton 按钮控件对象 afxwin.h CByteArray afxcoll.h CCachedDataPathProperty 允许一个ActiveX控件异步传输属性数据和缓冲内存中的数据,参考CDataPathProperty afxctl.h CCheckListBox afxwin.h CClientDC afxwin.h CCmdTarget 所有能够接收和响应消息的对象的基类 afxwin.h CCmdUI afxwin.h CColorDialog 颜色选择的通用对话框,提供为显示系统定义的颜色列表 afxdlgs.h CComboBox 组合框对象 afxwin.h CComboBoxEx CComboBox类的派生类,用于支持在组合框控件中的图像列表 afxcmn.h CCommandLineInfo afxwin.h CCommonDialog afxdlgs.h CConnectionPoint afxdisp.h CControlBar afxext.h CCreateContext afxext.h CCriticalSection afxmt.h CCtrlView afxwin.h CDaoDatabase afxdao.h CDaoException afxdao.h CDaoFieldExchange afxdao.h CDaoQueryDef afxdao.h CDaoRecordset 代表选自数据源的记录集。CDaoRecordset对象可用于三种格式:表类型记录集,动态集类型记录集和快照类型记录集 afxdao.h CDaoRecordView 提供表单视图,以在控件中显示数据库记录。表单视图是CDaoRecordset对象的一部分。参考CFormView和CRecordView afxdao.h CDaoTableDef afxdao.h CDaoWorkspace afxdao.h CDatabase afxdb.h CDataExchange afxwin.h CDataPathProperty 实现一个ActiveX控件属性,它能够异步加载其数据。这个类允许ActiveX控件在后台下载属性数据时被激活 afxctl.h CDateTimeCtrl 封装新的日期/时间选取器控件 afxdtctl.h CDBException afxdb.h CDBVariant afxdb.h CDC afxwin.h CDialog 用于包含控件窗口的对话框对象 afxwin.h CDialogBar afxext.h CDocItem afxole.h CDockState afxadv.h CDocObjectServer afxdocob.h CDocObjectServerItem afxdocob.h CDocTemplate afxwin.h CDocument 用于管理程序的数据的类 afxwin.h CDragListBox Windows列表框,允许用户把其中的项拖放到不同的位置 afxcmn.h CDumpContext afx.h CDWordArray afxcoll.h CEdit 用于文本输入的子窗口控件 afxwin.h CEditView 提供Windows编缉控件的功能。因为CEditView派生于Cedit,该对象可同文件和文件模板一同使用 afxext.h CEvent afxmt.h CException afx.h CFieldExchange afxdb.h CFile afx.h CFileDialog 通用文件对话框,提供Open和Save As对话框中的功能 afxdlgs.h CFileException afx.h CFileFind afx.h CFindReplaceDialog afxdlgs.h CFont afxwin.h CFontDialog 通用字体对话框,用于显示当前已装入系统的字体列表 afxdlgs.h CFontHolder afxctl.h CFormView 包含对话框控件的窗口 afxext.h CFrameWnd SDI(单窗口界面)框架窗口 afxwin.h CFtpConnection afxinet.h CFtpFileFind afxinet.h CGdiObject afxwin.h CGopherConnection afxinet.h CGopherFile afxinet.h CGopherFileFind afxinet.h CGopherLocator afxinet.h CHeaderCtrl 标题通用控件 afxcmn.h CHotKeyCtrl 热键通用控件 afxcmn.h CHtmlStream afxisapi.h CHtmlView 实现Web Browser控件的视图类,能够访问当地或Web上的HTML文件。 afxhtml.h CHttpConnection afxinet.h CHttpFile afxinet.h CHttpFilter 创建并处理超文传输协议过滤器对象,该对象用于过滤用于HTTP请求的服务器通知 afxisapi.h CHttpFilterContext afxisapi.h CHttpServer Internet Server API(ISAPI)的包装类 afxisapi.h CHttpServerContext afxisapi.h CImageList afxcmn.h CInternetConnection afxinet.h CInternetException afxinet.h CInternetFile afxinet.h CInternetSession afxinet.h CIPAddressCtrl IP地址控件。类似于编缉框,该控件接收Internet 协议格式的地址 afxcmn.h CList afxtempl.h CListBox 列表框对象 afxwin.h CListCtrl 列表视通用控件 afxcmn.h ClistView 简化CListCtrl的使用,添加了对文件和视图的支持 afxcview.h CLongBinary afxdb_.h CMap afxtempl.h CMapPtrToPtr afxcoll.h CMapPtrToWord afxcoll.h CMapStringToOb afxcoll.h CMapStringToPtr afxcoll.h CMapStringToString afxcoll.h CMapWordToOb afxcoll.h CMapWordToPtr afxcoll.h CMDIChildWnd MDI(多文档界面)子框架窗口 afxwin.h CMDIFrameWnd afxwin.h CMemFile afx.h CMemoryException afx.h CMemoryState CMenu afxwin.h CMetaFileDC afxext.h CMiniFrameWnd 半高的框架窗口,主要用于浮动工具栏。一个小框架窗口没有最小化和最大化按钮,但其他都类似于正常的框架窗口 afxwin.h CMonikerFile afxole.h CMonthCalCtrl 月历控件,用于显示一个用户可选择日期的日历 afxdtctl.h CMultiDocTemplate afxwin.h CMultiLock afxmt.h CMutex afxmt.h CNotSupportedException afx.h CObArray afxcoll.h CObject afx.h CObList afxcoll.h COleBusyDialog afxodlgs.h COleChangeIconDialog afxodlgs.h COleChangeSourceDialog afxodlgs.h COleClientItem afxole.h COleCmdUI afxdocob.h COleControl afxctl.h COleControlModule afxctl.h COleConvertDialog afxodlgs.h COleCurrency afxdisp.h COleDataObject afxole.h COleDataSource afxole.h COleDateTime afxdisp.h COleDateTimeSpan afxdisp.h COleDBRecordView afxoledb.h COleDialog afxodlgs.h COleDispatchDriver afxdisp.h COleDispatchException afxdisp.h COleDocObjectItem afxole.h COleDocument 把一个文件看作为CDocItem对象的一个集合。包容器和服务器都需要这个结构,因为它们的文件必须能够包含OLE项 afxole.h COleDropSource afxole.h COleDropTarget afxole.h COleException afxdisp.h COleInsertDialog afxodlgs.h COleIPFrameWnd afxole.h COleLinkingDoc OLE包容器文件的基类,这些文件支持对它们所包含项的链接 afxole.h COleLinksDialog afxodlgs.h COleMessageFilter afxole.h COleObjectFactory afxdisp.h COlePasteSpecialDialog afxodlgs.h COlePropertiesDialog afxodlgs.h COlePropertyPage afxctl.h COleResizeBar afxole.h COleSafeArray afxdisp.h COleServerDoc OLE服务器文件的基类 afxole.h COleServerItem 为OLE项提供一个服务器界面 afxole.h COleStreamFile afxole.h COleTemplateServer afxdisp.h COleUpdateDialog afxodlgs.h COleVariant afxdisp.h CPageSetupDialog afxdlgs.h CPaintDC afxwin.h CPalette afxwin.h CPen afxwin.h CPictureHolder afxctl.h CPoint atltypes.h CPrintDialog 通用打印对话框,提供Print和Print Setup对话框中的功能 afxdlgs.h CPrintInfo CProgressCtrl 通用进程指示器控件 afxcmn.h CPropertyPage 代表属性表单中的一页 afxdlgs.h CPropertyPageEx CPropertySheet 属性表,也叫做多选项卡对话框。一个属性表由一个CPropertySheet对象和几个CPropertyPage对象组成 afxdlgs.h CPropertySheetEx CPropExchange afxctl.h CPtrArray afxcoll.h CPtrList afxcoll.h CReBar afxext.h CReBarCtrl afxcmn.h CRecentFileList afxadv.h CRecordset 用于访问数据库表或查询的类 afxdb.h CRecordView 包含对话框控件的窗口 afxdb.h CRect atltypes.h CRectTracker afxext.h CResourceException afxwin.h CRgn afxwin.h CRichEditCntrItem afxrich.h CRichEditCtrl 用户能够输入和编缉文本的窗口,提供字符和程序段格式,以及对嵌入OLE项的支持 afxcmn.h CRichEditDoc afxrich.h CRichEditView afxrich.h CRuntimeClass CScrollBar 滚动条对象 afxwin.h CScrollView 可滚动的窗口,派生于CView afxwin.h CSemaphore afxmt.h CSharedFile afxadv.h CSingleDocTemplate afxwin.h CSingleLock afxmt.h CSize atltypes.h CSliderCtrl 提供包含一个滑块和可选的刻度线的窗口 afxcmn.h CSocket Windows Socket API的包装类 afxsock.h CSocketFile afxsock.h CSpinButtonCtrl 提供箭头按钮,用户可单击它,以增加或减少某个控件中的一个值 afxcmn.h CSplitterWnd afxext.h CStatic 用于标识另一个控件或给用户提供消息的简单文本框 afxwin.h CStatusBar afxext.h CStatusBarCtrl 提供一个层次窗口,通常放于父窗口的底部,用于显示关于应用程序的状态信息 afxcmn.h CStdioFile afx.h CString afx.h CStringArray afxcoll.h CStringList afxcoll.h CSyncObject afxmt.h CTabCtrl 允许应用程序在一个窗口或对话框的同一区域显示多个页面 afxcmn.h CTime afx.h CTimeSpan afx.h CToolBar afxext.h CToolBarCtrl 工具栏通用控件 afxcmn.h CToolTipCtrl 提供工具提示控件的功能,它以一个小弹出窗口的样子显示,包含描述某个工具用途的一行文本 afxcmn.h CTreeCtrl 显示项的分层结构列表 afxcmn.h CTreeView 简化CTreeCtrl的用法 afxcview.h CTypedPtrArray afxtempl.h CTypedPtrList afxtempl.h CTypedPtrMap afxtempl.h CUIntArray afxcoll.h CUserException afxwin.h CView 用于显示程序数据的类 afxwin.h CWaitCursor afxwin.h CWinApp afxwin.h CWindowDC afxwin.h CWinThread 代表一个应用程序中的一个线程 afxwin.h CWnd afxwin.h CWordArray afxcoll.h ......
目 录 第1篇 基础篇 第1章 数据库原理与访问. 2 1.1 数据库基本原理... 2 1.1.1 概述... 2 1.1.2 桌面数据库... 3 1.1.3 对象数据库... 3 1.1.4 关系数据库服务器... 5 1.1.5 选择适用的数据库... 5 1.2 数据库访问技术... 6 1.2.1 概述... 6 1.2.2 ODBC API 7 1.2.3 ODBC的MFC类... 7 1.2.4 DAO与RDO.. 8 1.2.5 OLE DB与ADO.. 9 1.3 数据库操纵语言SQL. 10 1.3.1 SQL命令... 10 1.3.2 SQL从句... 11 1.3.3 SQL运算符... 11 1.3.4 SQL合计函数... 11 1.4 小结... 12 第2章 COM与数据库访问. 13 2.1 COM的基本原理... 13 2.1.1 COM历史... 13 2.1.2 COM结构... 14 2.1.3 COM优势... 15 2.1.4 COM接口... 16 2.1.5 COM与数据库访问... 17 2.1.6 COM与Internet 17 2.2 ActiveX的数据库访问... 18 2.2.1 ActiveX简介... 18 2.2.2 ActiveX对数据库访问的支持... 18 2.3 ATL的数据库访问... 19 2.3.1 ATL目标... 19 2.3.2 ATL内容简介... 21 2.3.3 ATL对数据库访问的支持... 22 2.4 小结... 22 第3章 数据库开发过程. 23 3.1 阶段1:调查与分析... 23 3.2 阶段2:数据建模... 24 3.3 阶段3:功能设计... 24 3.4 阶段4:选择数据库系统... 25 3.5 阶段5:选择数据库访问技术... 25 3.6 阶段6:代码设计... 26 3.7 阶段7:测试与调试... 26 3.8 阶段8:发行产品... 26 第4章 VC++数据库开发基础. 27 4.1 VC++ 6.0工程创建向导... 27 4.2 VC++ 6.0数据库新建工具... 27 4.3 VC++ 6.0的数据库工程... 30 4.4 小结... 33 第2篇 实例篇 第5章 ODBC API编程. 35 5.1 了解ODBC API 35 5.2 ODBC API编程步骤... 36 5.2.1 步骤1:连接数据源... 36 5.2.2 步骤2:分配语句句柄... 38 5.2.3 步骤3:准备并执行SQL语句... 38 5.2.4 步骤4:获取结果集... 39 5.2.5 步骤5:提交事务... 41 5.2.6 步骤6:断开数据源连接并释放 环境句柄... 41 5.3 ODBC API编程实例... 41 5.3.1 实例概述... 41 5.3.2 实例实现过程... 42 5.3.3 编译并运行ODBCDemo1工程... 109 5.3.4 ODBCDemo1实例小结... 111 5.4 本章小结... 111 第6章 MFC ODBC编程. 112 6.1 了解MFC ODBC.. 112 6.1.1 CDatabase类... 112 6.1.2 CRecordSet类... 112 6.2 MFC ODBC数据库访问技术... 113 6.2.1 记录查询... 113 6.2.2 记录添加... 114 6.2.3 记录删除... 115 6.2.4 记录修改... 115 6.2.5 撤销数据库更新操作... 115 6.2.6 直接执行SQL语句... 115 6.2.7 MFC ODBC的数据库操作过程... 116 6.3 MFC ODBC编程实例... 116 6.3.1 实例概述... 116 6.3.2 实例实现过程... 117 6.3.3 编译并运行ODBCDemo2工程... 149 6.3.4 ODBCDemo2实例小结... 154 6.4 本章小结... 155 第7章 DAO数据库编程. 155 7.1 DAO的数据访问... 155 7.1.1 DAO对象... 155 7.1.2 MFC对DAO的支持... 156 7.1.3 DAO与ODBC的比较... 156 7.1.4 MFC的DAO类简介... 157 7.2 DAO编程实例... 160 7.2.1 实例概述... 160 7.2.2 实例实现过程... 161 7.2.3 运行DAODemo工程... 188 7.2.4 DAODemo实例小结... 193 7.3 小结... 193 第8章 OLE DB客户数据库编程. 194 8.1 OLE DB原理... 194 8.1.1 OLE DB与ODBC.. 194 8.1.2 OLE DB的结构... 194 8.1.3 OLE DB的优越性... 195 8.1.4 OLE DB对象... 195 8.1.5 OLE DB客户模板结构... 199 8.1.6 OLE DB客户模板类... 199 8.2 OLE DB客户数据库访问的两种途径.... 202 8.2.1 以MFC AppWizard(exe)为向导 建立OLE DB客户程序框架... 202 8.2.2 以ATL COM AppWizard为向导 建立OLE DB客户程序框架... 212 8.3 OLE DB客户应用程序编程实例... 217 8.3.1 实例概述... 217 8.3.2 实例实现过程... 218 8.3.3 编译并运行工程... 256 8.3.4 OLEDB_MFC实例小结... 261 8.4 小结... 261 第3篇 高级话题 第9章 ADO客户数据库编程. 262 9.1 ADO原理... 262 9.1.1 ADO与OLE DB.. 262 9.1.2 ADO的优越性... 263 9.1.3 ADO对象模型... 263 9.1.4 ADO编程... 266 9.2 ADO的数据库访问规范... 266 9.3 ADO数据库编程实例... 267 9.3.1 实例概述... 267 9.3.2 实例实现过程... 268 9.3.3 运行ADODemo工程... 299 9.3.4 ADODemo实例小结... 302 9.4 小结... 303 第10章 开发ADO数据库组件. 304 10.1 ADO组件概述... 304 10.1.1 COM组件原理... 304 10.1.2 ADO组件模型... 304 10.1.3 ADO组件同客户程序的协作... 306 10.2 ADO数据库组件开发实例... 307 10.2.1 实例概述... 307 10.2.2 实例实现过程... 307 10.2.3 编译工程... 327 10.3 编写组件的客户程序... 328 10.3.1 创建客户程序... 329 10.3.2 设计客户程序的界面... 330 10.3.3 编写测试代码... 330 10.3.4 ADOAccessor实例小结... 332 10.4 小结... 332 附录A 数据库访问的错误代码.............. 333 附录B 数据库编程资源网站........ 339 附录C 光盘内容.................. 340

4,011

社区成员

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

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