当前位置:主页 >泛亚电竞英雄联盟竞猜

泛亚电竞英雄联盟竞猜:SQL Server MFC DAO类和MFC ODBC类

发布时间:02月07日 阅读:676



大年夜多半 mfc 开拓职员都认识开放式数据库连接 (odbc) 数据库类 - 它们早在三年半曩昔就呈现了。在 mfc 4.2 中,对这些类有一些紧张的改进。

身为 c++ 开拓职员,您可能不认识 dao,由于到今朝为止它还只可用于 microsoft access 和 visual basic® 法度榜样设计系统。假如您认识 dao,就必须懂得:dao 在 mfc 中的实现颇有不合,但搜罗广泛。

懂得 mfc odbc 类的开拓职员必须知道:虽然 mfc dao 类比 odbc 类功能性更强,但 dao 类不能代替它们。

对付那些不怎么认识 mfc 的人,我想提醒一句:mfc 有一个适用于各类数据库类的设计原则。

mfc 像一张薄薄的包装纸那样,封装 windows® 操作系统 api,供给您想要的 c++ 机能,同时供给您必要的抽象观点。当根基 api 具有实际意义时,向其添加值。可是多半时刻 mfc 力求维持不为人触及。

就如 mfc 封装更繁杂的 api 一样,数据库类也封装更繁杂的技巧。由于 mfc 可以在 intel、unix 和 alpha 之间进行移值,以是数据库利用法度榜样办理规划也是可移值的。

我们与 microsoft access、visual basic 应用相同的记录集模型,是以,已经应用那些产品的开拓职员不必进修新的典型。别的,两个类集的体系布局基真相同,应用此中一个类集的开拓职员可以轻松地切换到另一个类集并应用它。

mfc 数据库类

自从 1.5 版之后,mfc 中就已经包孕 odbc 数据库类。visual c++ 2.0 版供给了含有相同类的 32 位版本。这些类基于一个工业认可标准,并已获得广泛利用,且因其 odbc 具有可移植性而受到其它数据库开拓选择规划的青睐。这种可移植性是指能够将许多 odbc 数据源与用这些类创建的利用法度榜样一路应用。迩来的机能改进使得 odbc 数据库类成为一个吸惹人的选择规划。

在多半环境下,mfc 4.0 中的 dao 数据库类容许您直接造访桌面数据源而无须应用 odbc。dao 数据库类所具有的同时打开多个数据库类型的能力、应用多半据源的能力以及数据定义说话能力,使其成为紧张的开拓选择规划。

现在,您已经筹备好提出这个问题,自己应应用哪个数据库类聚拢。假如您所供给的有关自己项目的信息不多,就很难确定这个问题的谜底。然则,第一件要斟酌的工作是您应用什么数据源。假如您平日应用桌面数据,我们鼓励您斟酌 mfc dao 数据库类,由于您将会发明它们极为有效且功能强大年夜。假如您主要应用 odbc(基于办事器)的数据,则应用基于 odbc 的类会使您项目的进展更富成效。

其它斟酌事变包括收集种类、可伸缩性要求,以及速率是否是最紧张的身分。最好是用您觉得事情得最好的数据库类集让利用法度榜样维持原型。可以进行一些基准测试,以确定您的最佳机能选择。

真正的抉择权在您

您可用来创建数据库利用法度榜样的选项聚拢很大年夜。它实际是完备的一系列选项,一端是桌面数据库利用法度榜样,另一端是严格的客户/办事器数据库利用法度榜样。仅有的两种看似显着的选择可能是:在 microsoft access 97 mdb 数据中应用 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 选项。但假如您还未斟酌其它选项,应该也对它们稍加懂得。

◆在实施前维持原型

在本文中您将数次看到此述说,由于它很紧张。您可能已做了很好的选择,但除非您的办理规划真的起了感化,否则事情就不算完成!

此外,关于本文,我们假设您想懂得的是 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 工具。mfc dao 数据库类不包括这些工具的类。

最为紧张的是,dao 接口是基于 ole com 的,它很好地安置 dao 以适应赓续成长的技巧和操作系统。

498)this.style.width=498;'src="http://www.51cto.com/files/uploadimg/20070416/1154170.gif">

示意图1

此处是 dao 层次布局图表。在顶端,将看到 dbengine 工具,该工具中含有所有其它工具。这是独一没有聚拢的工具,由于您只能有一个引擎。但可以有多个事情区 (workspace)、数据库 (database) 等等,这恰是余下的工具都有自己所属聚拢的缘故原由。

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

别的,与事情区连接的是用户工具和组工具,它们形成了 dao 的安然模型。

自力但与引擎工具连接的是 erro泛亚电竞英雄联盟竞猜rs 工具。

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 数据库类的层次布局

498)this.style.width=498;'src="http://www.51cto.com/files/uploadimg/20070416/1154171.gif">

示意图2

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

cdaoexception 由 cexception 派生获得,具备该类的优点,包括显示来自根基 dao errors 工具的差错消息的能力。

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

cdaofieldexchange 类支持由 dao 数据库类应用的 dao 记录字段互换 (dfx) 例程。假如要创建自定义的 dfx 例程,只要直接调用该工具即可。

mfc dao 数据库类

cdaoworkspace 封装 dbengine 工具和 workspace 工具。mfc dao 类供给事情区的事实异常紧张。odbc 数据库类不应时支持多个数据库连接。

事务处置惩罚是在 dao 数据库类中的 workspace(事情区)级别完成的,而不是在 odbc 类中的 recordse(记录集)级别完成的。一个事务可能会影响所有打开的数据库和记录集,或者您可以隔离事务,使其只会影响指定的数据库,等等。

多半时刻,您不必担苦衷情区工具的创建。假如您未创建,mfc 就将为您打开一个事情区工具。假如您必要的话,dao 数据库类可支持多个事情区。

着末,您不必担苦衷情区工具越过范围或是在数据库会话完成前关闭。可以应用事情区指针造访事情区聚拢,造访数据库聚拢,以及造访数据库引擎的属性等。

cdaodatabase

cdaodatabase 在体系布局上类似于基于 odbc 的 cdatabase 类。cdaodatabase 也封装数据库连接。由于您不必老是应用 odbc,以是对付大年夜多半桌面数据源,数据源的位置就表达为路径。cdaodatabase 可以存储 tabledef 和 querydef 工具,为您的开拓供给了极大年夜方便。cdaodatabase 可应用本地及远程数据源。在本白皮书的稍后部分,有一个可供您应用的数据源的列表。

该数据库工具在会话时代也不停继承存在。需要时可以明确地关闭数据库连接。仅就对照而言,cdatabase 类有 21 个成员函数,而 cdaodatabase 有 26 个成员函数。这些成员函数中彼此响应的都异常相似,在 cdaodatabase 中还有几个没有对应成员函数。

在 odbc 数据库类中没有与 cdaotabledef 响应的类。tabledef 工具让您反省数据库的架构(布局),不论表是本机 microsoft access 表(基础表)照样链接的表。假如用 dao 直接打开外部数据源,就可向此中添加字段和索引。假如您链接了表,就可以反省布局,但不能变动它。可以将表作为记录集的根基。这样做会使您得到几个好处,包括应用名为 seek 的快速搜索成员函数。

应用 cdaotabledef 可以确定是否可经由过程调用 cdaotabledef::canupdate 编辑表中的数据。mfc 认真为您治理 dao field 和 index 聚拢。应用 cdaotabledef 时,您可以选择是否向 tabledefs 聚拢中追加表;而应用所有其它工具时,会自动进行追加。

您用来检索记录的 sql 存储在 cdaoquerydef 工具中。您可用该工具存储您提出的有关数据的“问题”,如“how many customers did x dollars of business last month?”。可以检索或从新应用存储的查询,可按下列三种措施之一应用它们:

经由过程将指针通报到 cdaoquerydef 工具而创建记录集。

直接履行操作查询,即移动或变动数据的查询。操作查询包括追加、删除、天生表以及更新查询。删除查询和更新查询会变动现稀有据;附加查询和天生表查询会移动现稀有据。

履行 sqlpassthrough 查询:sql 直接通报查询是直接发送到数据库办事器而不会被 microsoft jet 数据库引擎中断的 sql 语句。sql 直接通报查询为您的利用法度榜样供给直接应用数据库办事器的功能的能力。

别的,cdaorecordset 还很类似于基于 odbc 的 crecordset 类。记录集不仅可以基于表,也可以基于动态集和快照。请记着,记录集代表您已检索到的记录和穿过数据的措施。移动并滚动数据的措施包括 seek(只用于表类型的记录集)、find 和 move 操作,以及 absoluteposition 和(假如您的数据源支持的话)书签。书签是独一的标识符,可经由过程调用该标识符来返回指定的记录。

mfc dao 数据库类中的大年夜部分功能是存在于 cdaorecordset 中的。crecordset 只有 44 个成员函数,与之比拟 cdaorecordset 有 91 个成员函数。这种额外的功能体现为字段值的导航、高速缓存、设置和检索中,以及记录集属性的设置和检索。

cdaorecordview 和 crecordview 类有险些相同的功能。别的,它们都还具有因基于 cformview 而得到的优点。请记着,窗体视图就好象在窗口的客户端区域舒展的对话框模板一样,有了它,添加控件与显示字段数据就很轻易。appwizard 和 classwizard 支持基于窗体的数据显示。假如应用 appwizard 创建初始利用法度榜样,您数据库中的列就会自动绑定到成员变量。

对付 dao 数据库类,非常差错处置惩罚略有不合。类 cdaoexception 将返回根基 dao ole 工具的差错消息。多半时刻,您可以检索的差错信息要比平日采纳基于 odbc 的类所得到的差错信息多。在 mfc 中,所有 dao 差错都表达为 cdaoexception 类型的非常差错。

当捕获到这种类型的非常差错时,可以应用 cdaoexception 成员函数从任何存储在数据库引擎 errors 聚拢中的 dao 差错工具中检索信息。每个差错发生时,都邑有一个或多个差错工具放入 errors 聚拢中。当另一个 dao 操作天生差错时,errors 聚拢被清除,新的差错工具被放入 errors 聚拢。

cdaofieldexchange 类支持由 dao 数据库类应用的 dao 记录字段互换 (dfx) 例程。假如您正在编写自定义数据类型的数据互换例程,则应用该类;否则,您不会直接应用该类。dfx 在您 cdaorecordset 工具的字段数据成员和数据源上当前记录的响应字段之间互换数据。dfx 治理两个偏向中的互换,即来自数据源的互换与到数据源的互换。若需关于编写自定义 dfx 例程的信息,请拜见 technic泛亚电竞英雄联盟竞猜al note 53(可在 books online 中的 mfc 下找到)。

cdaofieldexchange 工具供给发生 dao 记录字段互换所必要的高低文信息。cdaofieldexchange 工具支持许多操作,包括绑定参数和字段数据成员,以及在当前记录的字段上设置各类标志。dfx 操作是在类型的记录集类数据成员上履行的,这些类型由 cdaofieldexchange 中的 enum fieldtype 定义。可能的 fieldtype 值有:

用于字段数据成员的 cdaofieldexchange::outputcolumn。

用于参数数据成员的cdaofieldexchange::param。

498)this.style.width=498;'src="http://www.51cto.com/files/uploadimg/20070416/1154172.gif">

图1:mfc 的 odbc 数据库类

这里是基于 odbc 的数据库类的图片,与您所懂得的相同。顶真个栏代表基于 odbc、与 odbc 交谈的 mfc 类。每个数据库的 odbc 驱动法度榜样都解释 sql 调用,并针对每个数据源对其进行转换。许多半据源都与响应的驱动法度榜样一路显示在关系图的底部,以提醒您 odbc 的机动性。

图 2 是 dao 数据库类的图片。它们经由过程含有 dao 的 ole 进行通信,dao 与 jet 数据库引擎交谈。jet 数据库引擎有一些自力的 dll,用于与各类桌面数据源进行通信。

498)this.style.width=498;'src="http://www.51cto.com/files/uploadimg/20070416/1154173.gif">

图2:mfc dao 数据库类 - 桌面数据源

microsoft jet 数据库引擎可以直接打开诸如 foxpro® 数据库和 paradox 等的数据源。但只要您不必要变动这些数据源的架构,就可以将这些表链接到 microsoft access 数据库中,实际上这会更有效。这便是 foxpro 和 paradox 表(它们仅是示例)显示在两个位置的缘故原由。虚线用以暗示当可能直接打开数据源时,它的效率会更低。

被链接表的外不雅及事情要领与 microsoft jet 数据库中的任何其它表一样(虽然在连接到远程数据和检索远程数据方面略微有些机能差异)。建立和掩护与远程数据源连接所必要的信息存储在表定义中。

相反,当您直接打开表时,必须在每个会话开始时供给连接信息,以便建立与数据源的连接。建立与远程数据源的连接所必要的信息都不存储在 microsoft jet 数据库中。若要直接打开表,就必须应用 cdaotabledef::create,并且必须供给连接信息(如数据源、用户名、密码和数据库名称)。

498)this.style.width=498;'src="http://www.51cto.com/files/uploadimg/20070416/1154174.gif">

图3:mfc dao 数据库类,包括 sql 数据库

假如应用 dao 数据库类,就可以经过 odbc 造访办事器类型的数据库(如 microsoft sql server 和 oracle)。图 泛亚电竞英雄联盟竞猜3 不是完备的图片,由于它并没有包括对所有类型数据源的造访。

着末,图 4 是关于 mfc 数据库类的完备图片。请留意,mfc 栏和 odbc 栏上的垂直线表示指派两个数据库类集用作“非此即彼”决策。您可以选择造访所有类型的数据源,但不能混杂两个聚拢中的 mfc 数据库类。

498)this.style.width=498;'src="http://www.51cto.com/files/uploadimg/20070416/1154175.gif">

图4:mfc 数据库类

odbc 数据库类的数据源选择

当您用 mfc odbc 类编写利用法度榜样时,可以连接到任何数据源(只要您有它的 odbc 驱动法度榜样)。odbc 驱动法度榜样治理器和 odbc 驱动法度榜样的操作在您用这些类编写的利用法度榜样中是透明的,但个别驱动法度榜样机能会影响利用法度榜样的功能。

平日,mfc 动态集(但并非只向前滚动的记录集)要求 odbc 驱动法度榜样具有 2 级 api 同等性。假如数据源的驱动法度榜样相符 1 级 api 设置,您就仍可以应用可更新且只读的快照与只向前滚动的记录集,但不能应用动态集。然而,假如 1 级驱动法度榜样支持扩展的提取和键集驱动游标,它就可以支持动态集。

odbc desktop driver pack 3.0 版支持 2 级 odbc api 调用 sqlextendedfetch。

appwizard 和 classwizard 会自动将数据源的列静态地绑定到您利用法度榜样的成员变量中。这是在您利用法度榜样与数据源之间建立连接的最简单的措施,但不是最机动的措施。可以用类 cfieldexchange 将自定义的记录字段互换 (rfx) 调用添加到您的利用法度榜样中。请拜见“technical note 43:rfx routines”,以获取更多信息。

别的,还可以斟酌动态地绑定命据库的列。在最通俗的级别中可履行下列步骤:

◆构造您的主要记录集工具。然后,可以将指针通报给一个打开的 cdatabase 工具,或者也可以用其它措施向列记录集供给连接信息。

◆履行一些步骤,动态地添加列。

◆打开您的主要记录集。

◆记录聚会会议选择记录,并应用记录字段互换 (rfx) 绑定“静态”列(映射到记录集字段数据成员的列)和动态列(映射到您分配的额外存储的列)。

dao 数据库类的数据源选项

现在我们要谈的是您可以用 dao 数据库类连接的数据源、列的静态绑定、列的动态绑定,以及记录的双缓冲。

既然 microsoft access 数据库是 jet 的本机数据库,您自然就可以以最快速率造访它们。microsoft access 97 具有的数据库款式是 dao 3.5 版的本机数据库款式。假如应用 microsoft access 97 数据库,将得到最为快速的机能。

jet 应用零丁的 dll 供给对 microsoft jet 1.x 和 2.0 版数据库的造访权限。存储引擎和款式完全是用 microsoft jet 3.0 版修订的。要是变动之处很多,microsoft jet 3.0 版就会将 2.0 版数据库视为外部 isam,这会影响机能。是以,这也是匆匆使您应该斟酌将 microsoft access 数据库进级的合理缘故原由。

别的,您还可以造访可安装的 isam 数据库和 odbc 数据源。isam(基于索引的继续造访措施)数据库,如 foxpro 和 dbase,可以直接打开,也可以链接到 access 数据库以实现最佳机能。下面是 dao 可以造访的数据源的列表:

◆microsoft foxpro 的 2.0、2.5 和 2.6 版。在 3.0 版中可以导入与导出数据,但不能创建工具。

◆dbase iii、dbase iv 和 dbase 5.0

◆paradox 的 3.x、4.x 和 5.x 版

◆btrieve 的 5.1x 和 6.0 版

◆microsoft excel 的 3.0、4.0、5.0、7.0 和 8.0 版事情表

◆lotus wks、wk1、wk3、wk4 电子表格

文本文件

请记着,microsoft access 的 1.x、2.0 和 7.0 版数据库都属于此种别。

可以经由过程 odbc 造访 odbc 数据源,如 sql server 和 oracle,是以您可以选择针对这些数据源应用 dao。一个 odbc 数据源可以来自任何 dbms,只要您拥有该 dbms 的适当的 odbc 驱动法度榜样。对付 visual c++ 2.0 版或更高版本,您必要 32 位的 odbc 驱动法度榜样(但 win32 除外,在 win32 中必要 16 位的 odbc 驱动法度榜样)。下面是此版本 visual c++ 所包孕的 odbc 驱动法度榜样列表。

◆sql server

◆microsoft access

◆microsoft foxpro

◆microsoft excel

◆dbase

◆paradox

◆文本文件

microsoft desktop database drivers 3.0 版(它包孕列表中的着末六项)为这些数据源供给最佳机能。这些只限 32 位驱动法度榜样。

将外部数据源(如 sql server)链接到 microsoft access 表是最有效的处置惩罚数据造访的措施。在将利用法度榜样连接到远程数据源曩昔,必须先确保利用法度榜样的用户可以造访远程数据,并且确保精确地设计您的利用法度榜样,以办理远程数据源安然性难题。别的,您还必须确保利用法度榜样能够精确地与区分大年夜小写的数据源进行交流,并且确保精确地初始化可安装的 isam,以用于您想造访的数据源。着末,您必须反省您的代码,以确保在造访非 jet 数据源时,代码没有应用 microsoft jet 数据源专用的工具或调用。

设置链接最简捷的措施是:进入 microsoft access。假如用的是 microsoft access 2.0 版,则应用“文件”/“附加表”敕令;假如用的是 microsoft access 95 和 microsoft access 97,则应用“文件”/“获取外部数据”/“链接表”敕令。

连接信息存储在您所应用的基础表 (.mdb) 中。假如移动了外部数据的位置,就必须在 microsoft access 中或从代码中调用 cdaotabledef::refreshlink,从新建立链接。

dao 记录字段互换机制与在基于 odbc 的数据库类中的 rfx 有着相同的事情要领。记录集工具的字段数据成员假如联系在一路,就形成一个“编辑缓冲区”,以保存一个记录的选定列。当记录集第一次打开并要读取第一笔记录时,dfx 就会将每个选定列与适当字段数据成员的地址绑定(关联)在一路。当记录集更新一笔记录时,dfx 调用 dao 以向数据库引擎发送适当的敕令。dfx 使用它对字段数据成员所懂得的内容,指定要写入的数据源中的列(字段)。

领导支持列的静态绑定。您可以添加自己的 dfx 调用,就象应用基于 odbc 的类时那样。首先,对付每个绑定字段和参数,都必须将成员添加到 cdaorecordset 派生的类中。接下来,cdaorecordset::dofieldexchange 应被替代。请留意,成员的数据类型很紧张。它应与来自数据库字段中的数据匹配,或者至少可转换成那种类型。mfc technical #53 更具体地讲述了此历程。

cdaofieldexchange 类支持由 dao 数据库类应用的 dao 记录字段互换 (dfx) 例程。假如您正在编写自定义数据类型的数据互换例程,则应用该类。cdaofieldexchange 工具供给发生 dao 记录字段互换所必要的高低文信息。cdaofieldexchange 工具支持许多操作,包括绑定参数和字段数据成员,以及在当前记录的字段上设置各类标志。

dao 数据库类中的动态绑定

假如可以用基于 odbc 的类动态绑定列,对这种行径的支持就不会内置于 mfc 类中。动态绑定会内置在 dao 数据库类中,而且履行起来相称轻易。

还可以做一些其它的工作以优化机能,如检索记录的一部分而不是全部记录。在本述说的稍后部分中,我们将供给一些可以优化利用法度榜样的措施。

dfx 和动态绑定不是相互排斥的选择规划。经由过程 dao 数据库类,可以将静态和动态绑定调用混杂,以实现最大年夜效率。

dao 数据库类中的双缓冲

在 mfc 的 cdaorecordset 类中,双缓冲是一种当记录集内确当前记录发生变动时简化检测的机制。当添加新记录和编辑现有记录时,对您的 dao 记录集应用双缓冲会削减必需的事情量。默认环境下,您的 mfc dao 记录集保留编辑缓冲区的第二份副本(记录集类的字段数据成员,全体复制;dao“赞助”中称响应的缓冲区为“复制缓冲区”)。当您对数据成员进行变动时,mfc 会拿它们与副本(“双缓冲区”)进行对照以检测变动。

双缓冲的代用措施 泛亚电竞英雄联盟竞猜- 不保留数据的副本 - 当编辑当前记录的字段时,要求您进行其它函数调用。

双缓冲不停是基于 odbc 的数据库类的一部分。对付 dao 数据库类,假如必要,您可以停用该机制以前进效率。

该机制的主开关名为 m_bcheckcachefordirtyfields,dirty 意思是“已变动”。假如将此开关置于 on(开),就可以对整个或部分字段启用双缓冲。假如该主开关是 off(关),就会禁用全部双缓冲机制。

您最想关闭其双缓冲的字段包括备注字段、图片字段,以及其它 blob(大年夜型二进制工具)。

dao sdk 中含有一些 c++ 数据库类,这些类彼此自力,而且不合于 mfc dao 数据库类。这些 c++ 类将单个工具封装到 dao 层次布局中。虽然您可以将 dao sdk c++ 类与 mfc dao 数据库类混杂,但 dao sdk c++ 类不遵照操作符超载的 mfc 准则,并且在混杂应用这些类时您必须警惕。

mfc odbc 数据库类应用 microsoft access 和 visual 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 的能力。书签是独一的标识符,经由过程调用该标识符可返回指定的记录。



上一篇:雷竞技下载官方版:一棵小草的坚守新闻频道中国青年网
下一篇:电竞下载app送彩金:《环球时报》社评:向李文亮医生致以敬意