- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFCODBC编程
第6章 MFC ODBC编程
第6章 MFC ODBC编程
- PAGE 156-
- PAGE 157-
第6章 MFC ODBC编程
为了简化开发人员编写数据库应用程序,VC++的在其基础类库(MFC)里对ODBC API进行了封装,实现了一个面向对象的数据库编程接口,使VC++的数据库变得更加容易。
本章首先对MFC ODBC的概貌进行简要介绍,然后讲述利用MFC ODBC进行数据库开发的技巧,最后将通过具体数据库开发实例,详细讲述通过MFC ODBC开发数据库应用程序的方法和过程。
6.1 了解MFC ODBC
MFC是Microsoft Foundation Class(微软基础类库)的缩写,它的设计目标是简化开发人员的工作。MFC使开发人员创建基于Windows的应用程序,而不必掌握下层的Windows体系结构。由于数据库应用程序是管理数据的重要方面,Microsoft开发了ODBC API的封装程序,为ODBC编程提供了一个面向对象的方法。
MFC对ODBC的封装主要是开发了CDatabase类和CRecordSet类。
6.1.1 CDatabase类
CDatabase类用于应用程序建立同数据源的连接。CDatabase类包含一个m_hdbc变量,它代表了数据源的连接句柄。如果要建立CDatabase类的实例,应先调用该类的构造函数,再调用Open函数,通过调用,初始化环境变量,并执行与数据源的连接。关闭数据源连接的函数是Close。
CDatabase类提供了对数据库进行操作的函数,为了执行事务操作,CDatabase类提供了BeginTrans函数,当全部数据都处理完成后,可以通过调用CommitTrans函数提交事务,或者在特殊情况下通过调用Rollback函数将处理回退。
CDatabase类提供的函数可以用于返回数据源的特定信息,例如通过GetConnect函数返回在使用函数Open连接数据源时的连接字符串,通过调用IsOpen函数返回当前的CDatabase实例是否已经连接到数据源上,通过调用CanUpdate函数返回当前的CDatabase实例是否是可更新的,通过调用CanTransact函数返回当前的CDatabase实例是否支持事务操作,等等。
总之,CDatabase类为C++数据库开发人员提供了ODBC的面向对象的编程接口。
6.1.2 CRecordSet类
要实现对结果集的数据操作,就要用到CRecordSet类。CRecordSet类定义了从数据库接收或者发送数据到数据库的成员变量,CRecordSet类定义的记录集可以是表的所有列,也可以是其中的一列,这是由SQL语句决定的。
CRecordSet类的成员变量m_hstmt代表了定义该记录集的SQL语句句柄,m_nFields成员变量保存了记录集中字段的个数,m_nParams成员变量保存了记录集所使用的参数个数。
CRecordSet的记录集通过CDatabase实例的指针实现同数据源的连接,即CRecordSet的成员变量m_pDatabase。
如果记录集使用了WHERE子句,m_strFilter成员变量将保存记录集的WHERE子句的内容,如果记录集使用了ORDER BY子句,m_strSort成员变量将保存记录集的ORDER BY子句的内容。
由多种方法可以打开记录集,最常用的方法是使用Open函数执行一个SQL SELECT语句。有如下四种类型的记录集:
CRecordset::dynaset:动态记录集,支持双向游标,并保持同所连接的数据源同步,对数据的更新操作可以通过一个fetch操作获取。
CRecordset::snapshot:静态快照,一旦形成记录集,此后数据源的所有改变都不能体现在记录集里,应用程序必须重新进行查询,才能获取对数据的更新。该类型记录集也支持双向游标。
CRecordset::dynamic:同CRecordset::dynaset记录集相比,CRecordset::dynamic记录还能在fetch操作里同步其它用户对数据的重新排序。
CRecordset::forwardOnly:除了不支持逆向游标外,其它特征同CRecordset::snapshot相同。
6.2 MFC ODBC数据库访问技术
6.2.1 记录查询
使用CRecordSet的Open()和Requery()成员函数可以实现记录查询。需要注意的是,在使用CRecordSet的类对象之前,必须使用CRecordSet的成员函数Open()来获得有效的记录集。一旦使用过Open()函数,再次查询时使用Requery()函数就可以了。在调用Open()函数时,如果已经将一个打开的CData
您可能关注的文档
- 2010年浙江行测真题-鸿途教育整理.docx
- 2010年全国中考历史真题汇编世界近代史.doc
- 2010年注册岩土工程师考试真题下午段.doc
- 2010年湖南常德市中考数学试卷.doc
- 2010年福建省历史会考重点热点问题解读.doc
- 2010年河南省物理中考试题(word版含答案).doc
- 2010年财经法规与会计职业道德会计基础试题.doc
- 2010年浙江省普通高中会考试卷(Word).doc
- 2010年辽宁省大连市高三第二次模拟考试数学(文).doc
- 2010年莆田市初中毕业升学考试试卷.doc
- 历史的巨响 奋进的力量纪念我国第一颗原子弹爆炸成功60周年-热点速递“内容简介+素材集锦+时评+作文链接+范文”.docx
- 历史的巨响 奋进的力量:纪念我国第一颗原子弹爆炸成功60周年-热点速递“内容简介+素材集锦+时评+作文链接+范文”.docx
- 吉林省2016年中考文综试卷(解析版).doc
- 吉林省2016年中考文综试卷(解析版).doc
- 吉林省2016年度中考政 治试题(word版,含答案).doc
- 吉林省2016年中考政治试卷及答案【word版】.doc
- 2016年吉林省中考政治试题及答案解析.doc
- 吉林2016年初中毕业生学业考试.doc
- 竞聘技校数学老师演讲.docx
- 2016年吉林省中考政治试题解析.doc
文档评论(0)