`
helpbs
  • 浏览: 1165408 次
文章分类
社区版块
存档分类
最新评论

几种VC++数据库开发技术的比较

 
阅读更多
原地址:http://www.yesky.com/20011204/208233.shtml
从功能简单的数据库(如Jet Engine)到复杂的大型数据库系统(如oracle),VC++6.0都提供了一些编程接口。本文主要介绍以下五种:

  1.ODBC API;

  2.MFC ODBC类;

  3.MFC DAO类;(数据访问对象)

  4.MFC的OLE/DB;

  5.ActiveX数据对象(ADO)。

  1.开放数据库连接(ODBC API):提供了一个通用的编程接口,允许程序与多种不同的数据库连接。它为Oracle,SQL Server,MS Excel等都提供了驱动程序,使得用户可以使用SQL语句对数据库进行直接的底层功能操作。在使用ODBC API时,用户须引入的头文件为"sql.h","sqlext.h","sqltypes.h"。用ODBC API创建数据库应用程序遵循一定的基本步骤:

  第一步是分配ODBC环境,使一些内部结构初始化。完成这一步,须分配一个SQLHENV类型的变量在ODBC环境中做句柄使用。

  第二步是为将要使用的每一个数据源分配一个连接句柄,由函数SQLALLocHandle()完成。

  第三步是使用SQLConnect()把连接句柄与数据库连接,可以先通过SQLSetConnectAttr()设置连接属性。

  然后就可以进行SQL语句的操作,限于篇幅,相关的函数就不具体介绍了,读者可以参考相关书籍。

  操作完成后,用户取回相应的结果,就可以取消与数据库的连接。

  最后需要释放ODBC环境。

  ODBC API的特点是功能强大丰富,提供了异步操作,事务处理等高级功能,但相应的编程复杂,工作量大。

  2.MFC ODBC类:MFC1.5后的版本里引入封装了ODBC功能的类。通过这些类提供与ODBC的接口,使得用户可以不须处理ODBC API中的繁杂处理就可以进行数据库操作。主要的MFC ODBC类如下。

  CDatabase类:一个CDatabase对象表示一个到数据源的连接,通过它可以操作数据源。应用程序可使用多个CDatabase对象:构造一个对象并调用OpenEx()成员函数打开一个连接。接着构造CRecordSet对象以操作连接的数据源,并向CDatabase对象传递记录集构造程序指针。完成使用后用Close()成员函数销毁CDatabase对象。一般情况下并不需要直接使用CDatabase对象,因为CRecordSet对象可以实现大多数的功能。但是在进行事务处理时,CDatabase就起到关键作用。事务(Transaction)指的是将一系列对数据源的更新放在一起,同时提交或一个也不提交,为的是确保多用户对数据源同时操作时的数据正确性。

  CRecordSet类:一个CRecordSet对象代表一个从数据源选择的一组记录的集合-记录集。记录集有两种形式:snapshot和dynaset。前者表示数据的静态视图,后者表示记录集与其他用户对数据库的更新保持同步。通过CRecordSet对象,用户可以对数据库中的记录进行各种操作。

  CRecordView类:CRecordView对象是在空间中显示数据库记录的视图。这种视图是一种直接连到一个CRecordSet对象的格式视图,它从一个对话框模板资源创建,并将CRecordSet对象的字段显示在对话框模板的控件里。对象利用DDX和RFX机制,使格式上的控件和记录集的字段之间数据移动自动化,也就是说,用户甚至不要编写一行代码就可以实现简单的数据库记录查看程序。

  CDBException类:由Cexception类派生,以三个继承的成员变量反映对数据库操作时的异常:

   m_nRetCode:以ODBC返回代码(SQL_RETURN)的形式表明造成异常的原因。

   m_strError:字符串,描述造成抛出异常的错误原因。

   m_strStateNativeOrigin:字符串,用以描述以ODBC错误代码表示的异常错误。

  MFC数据库类成员函数都能抛出CDBException类型的异常,所以在代码对数据库进行操作后监测异常是正确做法。

  MFC ODBC类在实际开发中应用最广,因为它功能丰富,操作相对简便。
3.MFC DAO(数据访问对象)编程:DAO用于和微软的Access数据库接口。在数据库应用程序如果只需与Access数据库接口时,使用DAO编程较方便。其主要类如下。

  CDaoWorkspace:CDaoWorkspace对象可以让一个用户管理从登陆到离开期间,指定的密码保护的数据库会话全过程。大多数情况下不要多个工作区也不要创建明确的工作区对象。因为在打开数据库和记录集对象时,它们可以使用DAO缺省工作区。

  CDaoDatabase:代表一个连接,类似上述CDatabase类。

   CDaoRecordSet:用来选择记录集并操作,类似上述CRecordSet类。

   CDaoRecordView:类似上述CRecordView类。

   CDaoException:类似上述CDBException类。

   CDaoTableDef:表示基本表或附加表的定义。每个DAO数据库对象包括一个称为TableDef的收集,包含所有存储的DAO表定义对象。CDaoTableDef对象可以用来控制表定义。

   CDaoQueryDef:CDaoQueryDef对象表示了一个查询定义(querydef)。

   CDaoFieldExchange:支持数据库类使用的DAO字段交换(DFX)例程。也可处理事务,类似MFC ODBC类。

  MFC DAO仅用来支持Access数据库,应用范围相对固定。

  4.OLE DB:OLE DB在数据提供程序和用户之间提供了灵活的组件对象模型(COM)接口,这种灵活性有时会使得操作复杂化。OLE DB框架定义了应用的三个基本类。

  数据提供程序Data Provider:拥有自己的数据并以表格形式显示数据的应用程序。提供OLE DB的行集COM接口,期显示范围可以从单一数据表格的简单提供者知道更复杂的分布式数据库系统。

  使用者Consumers:使用OLE DB接口对存储在数据提供程序中的数据进行控制的应用程序。用户应用程序归为使用类。

  服务提供程序Service Provider:是数据提供程序和使用者的组合。服务提供程序没有自己的数据,但使用

  OLE DB使用者接口来访问存储在数据提供程序中的数据。然后,服务提供程序通过打开数据提供程序接口使得数据对使用者有效。服务提供程序常用于向应用程序提供高层次服务,比如高级分布式查询。

  OLE DB编程时,用户使用组件对象开发应用程序。这些组件有:

   枚举器:用于列出可用的数据源;

   数据源:代表单独的数据和服务提供程序,用于创建对话;

   对话:用于创建事务和命令;

   事务:用于将多个操作归并为单一事务处理;

   命令:用于向数据源发送文本命令(SQL),返回行集;

   错误:用于获得错误信息。

  5.ActiveX数据对象(ADO):是微软提供的面向对象的接口,与OLE DB类似,但接口更简单,具有更广泛的特征数组和更高程度的灵活性。ADO基于COM,提供编程语言可利用的对象,除了面向VC++,还提供面向其他各种开发工具的应用,如VB,VJ等。ADO在服务器应用方面非常有用,特别是对于动态服务器页面ASP(Active Server Page)。

  ADO对象结构类似于OLE DB,但并不依靠对象层次。大多数情况下,用户只需要创建并只使用需要处理的对象。下面的对象类组成了ADO接口。

   Connection:用于表示与数据库的连接,以及处理一些命令和事务。

   Command:用于处理传送给数据源的命令。

   Recordset:用于处理数据的表格集,包括获取和修改数据。

   Field:用于表示记录集中的列信息,包括列值和其他信息。

   Parameter:用于对传送给数据源的命令之间来回传送数据。

   Property:用与操作在ADO中使用的其他对象的详细属性。

   Error:用于获得可能发生的错误的详细信息。

  在VC++使用ADO需要进行COM操作,详细方法在此就不赘述了。

  在当今流行的分布式开发环境下,VC++6.0在数据库开发方面有较强的优势,学会

  在不同的场合选用不同的技术,对开发人员来说是必要的技术。
分享到:
评论

相关推荐

    Visual C++ .net数据库开发经典案例解析

    (1) 本光盘是《Visual C++.NET数据库开发经典案例解析》的配套光盘,与图书一起发行,不得单独出售。 (2) 本光盘的主要内容包括各章示例程序的代码及数据库文件。光盘的说明文件为Readme.txt,即本文件。 (3) 示例...

    VC++通用GIS功能开发解决方案

    VC++通用GIS功能开发解决方案》源代码是基于VC++6.0 MFC 类库,在Win2000平台上开发的。界面部分用到了较低版本的 CJ60Lib 开放源码库,用户可自行替换高版本或其他界面库,它不作为本方案的商业部分。 《VC++...

    基于嵌入式数据库的英汉汉英双向电子词典(论文+源程序)

    首先分析几种嵌入式数据库特点,通过对各数据库查询效率,存储空间优化的比较测试,选择SQLite作为电子词典的存储。然后分析了金山词霸的功能,选择了一些常用的功能作为本系统实现的基本功能,如中英文查词、词典...

    vc++ 开发实例源码包

    P2P视频技术源码(含开发文档) 目前的协议有如下一些特点: 1) 客户向服务器发送请求, 每个请求的长度不定. 请求的长度在第一个INT中指定. 2) 每个服务器通常会向多种客户提供服务, 例如, TS要同时向CP, NP提供服务,...

    VC++2010权威开发指南+源代码.part2

     第13章 VisualC++2010MFC数据库开发  第14章 VisualC++2010MFC多线程程序设计  第15章 VisualC++2010MFC网络程序设计  第16章 VisualC++2010MFC进程通信  第三部分 VisualC++2010下MFC与CLR进行开发  第17章 ...

    vc++ 应用源码包_3

    VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows核心编程(第五版)随书源代码 vc-ftp 多线程操作多文件传输的操作。 VC版下载者 源码 非常简单的一个实例,使用了URLDownloadToFile下载文件...

    VC++2010权威开发指南+源代码

     第13章 VisualC++2010MFC数据库开发  第14章 VisualC++2010MFC多线程程序设计  第15章 VisualC++2010MFC网络程序设计  第16章 VisualC++2010MFC进程通信  第三部分 VisualC++2010下MFC与CLR进行开发  第17章 ...

    vc++实战COM,DCOM,COM+教程笔记+示例源代码.zip

    分布式多层数据库开发_关于建立COM 时的几个选项现在说明一下Threading Model 进程内组件的注册使用regsvr32 xxx.dll,进程外组件的注册使用xxx.exe register 创建进程内COM组件 创建进程外COM组件 事务 ...

    vc++ 应用源码包_1

    VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows核心编程(第五版)随书源代码 vc-ftp 多线程操作多文件传输的操作。 VC版下载者 源码 非常简单的一个实例,使用了URLDownloadToFile下载文件...

    VC++编程指南(中文版).chm

     3.5几种窗口类型  3.6 使用菜单  3.7 更新命令用户接口(UI)消息  3.8 快捷菜单 第四课 工具条和状态栏  4.1 工具条的可视化设计  4.2 工具条的编程技术  4.3 状态栏的设计与实现 第五课 对话框  ...

    VC++ 编程指南_中文chm

     3.5几种窗口类型  3.6 使用菜单  3.7 更新命令用户接口(UI)消息  3.8 快捷菜单 第四课 工具条和状态栏  4.1 工具条的可视化设计  4.2 工具条的编程技术  4.3 状态栏的设计与实现 第五课 对话框  ...

    VC++图书馆管理系统带文档

    图书管理系统是一种基于集中统一规划的数据库数据管理新模式。在对图书、读者的管理,其实是对图书、读者数据的管理。本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。 本系统的设计主要从以下几方面做起...

    1labview数据库.docx

    LabVIEW中访问数据库的几种不同方法 虚拟仪器VI(Virtual Instruments)是National Instruments公司在其产品LabVIEW中首先提出的创新概念[1]。虚拟仪器系统的概念是测控系统的抽象。不管是传统的还是虚拟的仪器,它们...

    vc++ 应用源码包_5

    VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows核心编程(第五版)随书源代码 vc-ftp 多线程操作多文件传输的操作。 VC版下载者 源码 非常简单的一个实例,使用了URLDownloadToFile下载文件...

    vc++ 应用源码包_6

    VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows核心编程(第五版)随书源代码 vc-ftp 多线程操作多文件传输的操作。 VC版下载者 源码 非常简单的一个实例,使用了URLDownloadToFile下载文件...

    vc++ 应用源码包_2

    VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows核心编程(第五版)随书源代码 vc-ftp 多线程操作多文件传输的操作。 VC版下载者 源码 非常简单的一个实例,使用了URLDownloadToFile下载文件...

    VC++可视化编程指南

     3.5几种窗口类型  3.6 使用菜单  3.7 更新命令用户接口(UI)消息  3.8 快捷菜单 第四课 工具条和状态栏  4.1 工具条的可视化设计  4.2 工具条的编程技术  4.3 状态栏的设计与实现 第五课 对话框  ...

    VC与Labview、Matlab编程论文资料[2].rar

    VC_中连接Oracle数据库的几种方法.pdf VC_串口通信中多线程技术的应用研究.pdf VC_和COM的预测控制算法的仿真研究.pdf VC_和Excel对象接口的研究与应用.pdf VC_和Matlab混合编程的语音识别研究.pdf VC_实现Excel操作...

Global site tag (gtag.js) - Google Analytics