SQL Server mfc 数据库类简介


  本文标签:SQL Server mfc

  此文章主要讲述的是SQL Server mfc 数据库类, 我们大家都知道自从 1.5 版之后,mfc 数据库类中就已经包含了odbc 数据库类  。visual c++ 2.0 版提供了含有相同类的 32 位版本  。这些类基于一个工业认可标准,并已得到广泛应用  。

  且因其 odbc 具有可移植性而受到其它数据库开发选择方案的青睐  。这种可移植性是指能够将许多 odbc 数据源与用这些类创建的应用程序一起使用  。近来的性能改进使得 odbc 数据库类成为一个吸引人的选择方案  。

  在多数情况下,mfc 4.0 中的 dao 数据库类允许您直接访问桌面数据源而无须使用 odbc  。dao 数据库类所具有的同时打开多个数据库类型的能力、使用多数据源的能力以及数据定义语言能力,使其成为重要的开发选择方案  。

  现在,您已经准备好提出这个问题,自己应使用哪个数据库类集合  。如果您所提供的有关自己项目的信息不多,就很难确定这个问题的答案  。但是,第一件要考虑的事情是您使用什么数据源  。如果您通常使用桌面数据,我们鼓励您考虑SQL Server mfc dao 数据库类,因为您将会发现它们极为有效且功能强大  。

  如果您主要使用 odbc(基于服务器)的数据,则使用基于 odbc 的类会使您项目的进展更富成效  。

  其它考虑事项包括网络种类、可伸缩性要求,以及速度是否是最重要的因素  。最好是用您认为工作得最好的数据库类集让应用程序保持原型  。可以进行一些基准测试,以确定您的最佳性能选择  。

  真正的决定权在您

  您可用来创建数据库应用程序的选项集合很大  。它实际是完整的一系列选项,一端是桌面数据库应用程序,另一端是严格的客户/服务器数据库应用程序  。仅有的两种看似明显的选择可能是:在 microsoft access 97 mdb 数据中使用 SQL Server mfc dao 数据库类,而在 microsoft sql server ™ 6.5 中使用 mfc odbc 数据库类  。这两种组合主要是互相配合使用的,均非常有效  。但您可能已对这些选择有所了解,其它情况又该如何呢?

  简要地说,以下是您赖以决策的过程:

  确定数据源需求

  您需要的数据库有多大? 一次会有多人需要访问数据吗? 有时,其余的大多数步骤均取决于您选择的数据源  。

  确定接口需求

  如果您需要的接口有大量的用户输入(如用户可以设计自己的查询),那么在调整和分发数据库(一个或多个)时就必须要慎重  。例如,如果需要用变化不大的数据填充列表框,并且已选择基于服务器的数据源,则将通常不变化的数据存储在本地而非服务器上,是一种有意义的做法  。

  确定连接性需求

  目前使用的网络协议有很多种,每种协议都对通过网络传送的数据各有不同影响  。关于网络的讨论不是本白皮书份内之事,但您需要了解如何优化自己的数据库应用程序,以避免遇到网络的数据陷阱  。

  选择适当的工具(一个或多个)

  microsoft 为数据库开发人员提供了多种可选择的工具(microsoft access、visual basic、visual basic enterprise、visual c++/mfc 以及 sql server),在某些情况下它们的功能略有重叠  。本白皮书旨在讨论 visual c++/mfc 选项  。但如果您还未考虑其它选项,应该也对它们稍加了解  。

  在实施前保持原型

  在本文中您将数次看到此陈述,因为它很重要  。您可能已做了很好的选择,但除非您的解决方案真的起了作用,否则工作就不算完成!

  此外,关于本文,我们假设您想了解的是 SQL Server mfc 的数据库类  。我们不妨尽可能多地检查一些选择方案,以便您认可您想为自己的第一个原型采用的指导  。

  类 crecordview 是一种 mfc 构造 - 一种显示数据的形式  。因为 crecordview 是基于 cformview 的,所以它具有该基础类的所有遗传功能  。从本质上说,窗体视图在窗口的客户端区域伸展对话框模板  。这使得添加控件与显示字段数据极为容易  。

  当使用 appwizard 和 classwizard 创建基于 odbc 的数据库应用程序时,记录集的列会自动绑定到(静态地)成员变量,这些变量可以随后添加到对话框模板中  。

  一个 cdbexception 对象代表一种由数据库类引起的异常错误条件  。该类中含有两个公共数据成员,可使用这两个成员确定导致异常错误的原因,或显示对异常错误进行说明的文本消息  。cdbexception 对象由数据库类的成员函数构造与抛出  。

  cfieldexchange 类支持由数据库类使用的记录字段交换 (rfx) 例程  。如果您正在编写自定义数据类型的数据交换例程,则使用该类;否则,您不会直接使用该类  。rfx 在您记录集对象的字段数据成员和数据源上当前记录的相应字段之间交换数据  。rfx 管理两个方向中的交换,即来自数据源的交换与到数据源的交换  。

  在 dao 的本机格式中,包含 21 个对象和 20 个集合  。而且,dao 不仅提供单个的对象,如表和字段,还提供对象所属的集合  。对象的这种清晰的层次结构使得能够轻松地将面向对象的原理应用于数据库开发  。

  dao 的存在已有一段时间  。dao 1.0 版出现在 microsoft access 1.0 版中,它仅提供到表与查询结构的接口,以及代表具有数量有限的属性的表、动态集、快照的对象  。visual basic 3.0 版中的 data access objects 1.0 添加了 tabledef、querydef 和 field 对象,以提供可编程的结构  。

  microsoft access 2.0 版中的 dao 2.0 版有 ole 自动化的雏形,以及对几乎所有 microsoft jet 功能的全部编程访问权限  。它拥有具有可靠的对象与属性集合的全部对象模型  。

  dao 2.5 版中含有 odbc 桌面数据库驱动程序 (odbc desktop database driver),这些驱动程序是为 16 位平台能与 odbc desktop database drivers 2.0 版一起使用而创建的  。该 16 位版本是为用于 visual basic 4.0 版的 16 位版本而安装的  。

  dao 3.0 版随带在 microsoft access for windows 95、visual basic 4.0 版(32 位)、microsoft excel 7.0 版 和 visual c ++ 4.0 版中  。dao 得到了增强,以支持任何兼容主机的单机接口  。

  dao 3.5 版随带在 microsoft access for windows 97 中,并且含有新的 odbcdirect com 对象  。SQL Server mfc dao 数据库类不包括这些对象的类  。

  

  最为重要的是,dao 接口是基于 ole com 的,它很好地安置 dao 以适应不断发展的技术和操作系统  。

  此处是 dao 层次结构图表  。在顶端,将看到 dbengine 对象,该对象中含有所有其它对象  。这是唯一没有集合的对象,因为您只能有一个引擎  。但可以有多个工作区 (workspace)、数据库 (database) 等等,这正是余下的对象都有自己所属集合的原因  。

  

  在工作区中,可以有多个数据库,一个基本表 (.mdb) 或一个附加/链接的表  。在每个数据库中将有一个或多个表、查询、记录集,而其中的每个表、查询、记录集不仅包含字段和(或)索引,还有其它类型的对象  。

  另外,与工作区连接的是用户对象和组对象,它们形成了 dao 的安全模型  。

  独立但与引擎对象连接的是 errors 对象  。

  errors 集合中对象的附加方式不同于其它 dao 集合  。最详细的错误放在集合的末尾,最常规的错误放在开头  。