频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

MS SQL Server MFC DAO 类和 MFC ODBC 类:我使用哪个类集?

来源:赛迪网技术社 作者: 出处:巧巧读书 2007-04-13 进入讨论组
上一页 1 2 3 4 5 下一页 

在实施前保持原型

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

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

mfc odbc 数据库类使用 microsoft accessvisual basic 中的记录集模型。您可以用内置于类中的成员函数对记录进行筛选、分类、滚动以及其它处理。基础 odbc 驱动程序会影响特殊应用程序的功能。因此,若要使可移植性更强,您的应用程序就必须更具有通用性,或者必须依赖于更低级别的 odbc 功能。如有必要,可以直接调用 odbc,以完成特殊任务。现在,让我们检查该集合中的单个类。

就象使用 mfc 那样,必要时可以调用基础 api(在此情况下为 odbc)。

一个 cdatabase 对象代表一个到数据源的连接,通过此连接您可以在数据源上进行操作。数据源是指以某些数据库管理系统 (dbms) 作为宿主的指定数据实例。具体示例包括 microsoft sql server、microsoft access、borland dbase 和 xbase。您可以在自己的应用程序中同时让一个或多个 cdatabase 对象处于活动状态,并且可以保持到一个数据库对象的多个连接。

一个 crecordset 对象代表从数据源中选择的一个记录集合。称为“记录集”的 crecordset 对象有三种可用的形式:动态集、快照、动态记录集。动态集是与其他用户的更新保持同步的记录集。快照是静态记录集,它反映的是抓拍快照时数据库的状态。动态记录集类似于动态集,但通常只用于 microsoft sql server。每种形式都代表在打开记录集时确定的记录集合,但当您在动态集内或动态记录集内滚动到一条记录时,它反映后来由其他用户或您应用程序中的其它记录集对记录所做的更改。

mfc 4.2 以书签的形式向 crecordset 类中添加新的导航功能,并添加标识及导航到记录的 absoluteposition 的能力。书签是唯一的标识符,通过调用该标识符可返回指定的记录。

类 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 对象。mfc dao 数据库类不包括这些对象的类。

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


MS SQL Server MFC DAO 类和 MFC ODBC 类:我使用哪个类集?(图一)
点击查看大图


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

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

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

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

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

mfc 和 dao

现在要谈的是 mfc 如何实现 dao。因为我们不是分别包装每个 dao 对象,所以实际上 mfc 会平展 dao 的层次结构。我们为您提供 8 个对象而不是 21 个对象。

我们封装所有的 dao 功能,除 security 对象外 - users 对象、groups 对象以及新的 odbcdirect 对象。这是我们有意而为。例如,我们觉得在查看安全性对象时,围绕它们创建类将不会给 dao 的使用添加任何值,因此还是让您直接调用 dao,来处理那些对象。这也是与 mfc 原则一致的:应该在对添加值的立场而言有意义的地方创建类。但我们仍会在 mfc technical note 54 中提供关于如何实现安全性模型的指导。

另外,我们还管理 dao 要将对象追加到集合的要求。在 dao 中,您创建对象,然后将它追加到集合中。除一种例外情况外,这种添加是自动完成的。对于这种例外情况,可作为一个单独的步骤来设置开发人员能否追加对象,这是很用的。

虽然可能用 odbc 数据库类进行动态绑定,但实现这一目的的功能并非 mfc 类的内置功能。它被置入 dao 数据库类,您可以相当轻松地进行动态绑定。现在我们的第二个演示将更多地谈及这一点。

dao 提供来自 sql 的数据定义语言 (ddl),以便您创建数据库、表、记录集等。在 odbc 中没有 ddl。

最后,当您需要时,总是可以对基础 dao ole 对象进行直接调用。

mfc dao 数据库类的层次结构


MS SQL Server MFC DAO 类和 MFC ODBC 类:我使用哪个类集?(图二)

五个由 cobject 派生的 mfc dao 类(cdaoworkspace、cdaodatabase、cdaotabledef、cdaoquerydef 和 cdaorecordset)具有该基础类的所有功能。

cdaoexception 由 cexception 派生得到,具备该类的优点,包括显示来自基础 dao errors 对象的错误消息的能力。

如前面提到的那样,cdaorecordview 由 cformview 派生得到,而 cformview 又由 cscrollview 派生得到,依次类推。可以看到 cdaorecordview 类在快速而轻松地实现基于窗体的数据显示方面所具有的全部优点。此外,还有对于 cdaorecordview 的向导支持。该类中的功能实质上是与 crecordview 类一样的。

cdaofieldexchange 类支持由 dao 数据库类使用的 dao 记录字段交换 (dfx) 例程。如果要创建自定义的 dfx 例程,只要直接调用该对象即可。
保留:: http://www.qqread.com/mysql/z308793.html 更多文章 更多内容请看SQL Server 数据处理专题SQL Server 索引和查询专题SQL Server专题,或进入讨论组讨论。
上一页 1 2 3 4 5 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选