⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 45901.htm

📁 一本很基础的SQL讲解
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<link href="./dzs_cs.css" rel="stylesheet" type="text/css" /><table width="96%" border="0" align="center" cellpadding="0" cellspacing="0">      <tr>        <td>&nbsp;</td>      </tr>      <tr>        <td height="24" align="center" valign="bottom" class="d_font3">SQL Server MFC DAO类和MFC ODBC类</td>      </tr>      <tr>        <td height="3" bgcolor="#E3E3E3"></td>      </tr>      <tr>        <td>&nbsp;</td>      </tr>      <tr>        <td class="d_font4"><P>大多数 mfc 开发人员都熟悉开放式数据库连接 (odbc) 数据库类 - 它们早在三年半以前就出现了。在 mfc 4.2 中,对这些类有一些重要的改进。</P>
<P>身为 c++ 开发人员,您可能不熟悉 dao,因为到目前为止它还只可用于 microsoft access 和 visual basic&reg; 程序设计系统。如果您熟悉 dao,就必须了解:dao 在 mfc 中的实现颇有不同,但包罗广泛。</P>
<P>了解 mfc odbc 类的开发人员必须知道:虽然 mfc dao 类比 odbc 类功能性更强,但 dao 类不能代替它们。</P>
<P>对于那些不怎么熟悉 mfc 的人,我想提醒一句:mfc 有一个适用于各种数据库类的设计原则。</P>
<P>mfc 像一张薄薄的包装纸那样,封装 windows&reg; 操作系统 api,提供您想要的 c++ 性能,同时提供您需要的抽象概念。当基础 api 具有实际意义时,向其添加值。可是多数时候 mfc 力图保持不为人触及。</P>
<P>就如 mfc 封装更复杂的 api 一样,数据库类也封装更复杂的技术。因为 mfc 可以在 intel、unix 和 alpha 之间进行移值,所以数据库应用程序解决方案也是可移值的。</P>
<P>我们与 microsoft access、visual basic 使用相同的记录集模型,因此,已经使用那些产品的开发人员不必学习新的范例。另外,两个类集的体系结构基本相同,使用其中一个类集的开发人员可以轻松地切换到另一个类集并使用它。</P>
<P><STRONG>mfc 数据库类</STRONG></P>
<P>自从 1.5 版之后,mfc 中就已经包含 odbc 数据库类。visual c++ 2.0 版提供了含有相同类的 32 位版本。这些类基于一个工业认可标准,并已得到广泛应用,且因其 odbc 具有可移植性而受到其它数据库开发选择方案的青睐。这种可移植性是指能够将许多 odbc 数据源与用这些类创建的应用程序一起使用。近来的性能改进使得 odbc 数据库类成为一个吸引人的选择方案。</P>
<P>在多数情况下,mfc 4.0 中的 dao 数据库类允许您直接访问桌面数据源而无须使用 odbc。dao 数据库类所具有的同时打开多个数据库类型的能力、使用多数据源的能力以及数据定义语言能力,使其成为重要的开发选择方案。</P>
<P>现在,您已经准备好提出这个问题,自己应使用哪个数据库类集合。如果您所提供的有关自己项目的信息不多,就很难确定这个问题的答案。但是,第一件要考虑的事情是您使用什么数据源。如果您通常使用桌面数据,我们鼓励您考虑 mfc dao 数据库类,因为您将会发现它们极为有效且功能强大。如果您主要使用 odbc(基于服务器)的数据,则使用基于 odbc 的类会使您项目的进展更富成效。</P>
<P>其它考虑事项包括网络种类、可伸缩性要求,以及速度是否是最重要的因素。最好是用您认为工作得最好的数据库类集让应用程序保持原型。可以进行一些基准测试,以确定您的最佳性能选择。</P>
<P><STRONG>真正的决定权在您</STRONG></P>
<P>您可用来创建数据库应用程序的选项集合很大。它实际是完整的一系列选项,一端是桌面数据库应用程序,另一端是严格的客户/服务器数据库应用程序。仅有的两种看似明显的选择可能是:在 microsoft access 97 mdb 数据中使用 mfc dao 数据库类,而在 microsoft sql server &#8482; 6.5 中使用 mfc odbc 数据库类。这两种组合主要是互相配合使用的,均非常有效。但您可能已对这些选择有所了解,其它情况又该如何呢?</P>
<P>简要地说,以下是您赖以决策的过程:</P>
<P>◆确定数据源需求<BR>您需要的数据库有多大? 一次会有多人需要访问数据吗? 有时,其余的大多数步骤均取决于您选择的数据源。</P>
<P>◆确定接口需求<BR>如果您需要的接口有大量的用户输入(如用户可以设计自己的查询),那么在调整和分发数据库(一个或多个)时就必须要慎重。例如,如果需要用变化不大的数据填充列表框,并且已选择基于服务器的数据源,则将通常不变化的数据存储在本地而非服务器上,是一种有意义的做法。</P>
<P>◆确定连接性需求<BR>目前使用的网络协议有很多种,每种协议都对通过网络传送的数据各有不同影响。关于网络的讨论不是本白皮书份内之事,但您需要了解如何优化自己的数据库应用程序,以避免遇到网络的数据陷阱。</P>
<P>◆选择适当的工具(一个或多个)<BR>microsoft 为数据库开发人员提供了多种可选择的工具(microsoft access、visual basic、visual basic enterprise、visual c++/mfc 以及 sql server),在某些情况下它们的功能略有重叠。本白皮书旨在讨论 visual c++/mfc 选项。但如果您还未考虑其它选项,应该也对它们稍加了解。</P>
<P>◆在实施前保持原型<BR>在本文中您将数次看到此陈述,因为它很重要。您可能已做了很好的选择,但除非您的解决方案真的起了作用,否则工作就不算完成!</P>
<P>此外,关于本文,我们假设您想了解的是 mfc 的数据库类。我们不妨尽可能多地检查一些选择方案,以便您认可您想为自己的第一个原型采用的指导。</P>
<P>类 crecordview 是一种 mfc 构造 - 一种显示数据的形式。因为 crecordview 是基于 cformview 的,所以它具有该基础类的所有遗传功能。从本质上说,窗体视图在窗口的客户端区域伸展对话框模板。这使得添加控件与显示字段数据极为容易。</P>
<P>当使用 appwizard 和 classwizard 创建基于 odbc 的数据库应用程序时,记录集的列会自动绑定到(静态地)成员变量,这些变量可以随后添加到对话框模板中。</P>
<P>一个 cdbexception 对象代表一种由数据库类引起的异常错误条件。该类中含有两个公共数据成员,可使用这两个成员确定导致异常错误的原因,或显示对异常错误进行说明的文本消息。cdbexception 对象由数据库类的成员函数构造与抛出。</P>
<P>cfieldexchange 类支持由数据库类使用的记录字段交换 (rfx) 例程。如果您正在编写自定义数据类型的数据交换例程,则使用该类;否则,您不会直接使用该类。rfx 在您记录集对象的字段数据成员和数据源上当前记录的相应字段之间交换数据。rfx 管理两个方向中的交换,即来自数据源的交换与到数据源的交换。</P>
<P>在 dao 的本机格式中,包含 21 个对象和 20 个集合。而且,dao 不仅提供单个的对象,如表和字段,还提供对象所属的集合。对象的这种清晰的层次结构使得能够轻松地将面向对象的原理应用于数据库开发。</P>
<P>dao 的存在已有一段时间。dao 1.0 版出现在 microsoft access 1.0 版中,它仅提供到表与查询结构的接口,以及代表具有数量有限的属性的表、动态集、快照的对象。visual basic 3.0 版中的 data access objects 1.0 添加了 tabledef、querydef 和 field 对象,以提供可编程的结构。</P>
<P>microsoft access 2.0 版中的 dao 2.0 版有 ole 自动化的雏形,以及对几乎所有 microsoft jet 功能的全部编程访问权限。它拥有具有可靠的对象与属性集合的全部对象模型。</P>
<P>dao 2.5 版中含有 odbc 桌面数据库驱动程序 (odbc desktop database driver),这些驱动程序是为 16 位平台能与 odbc desktop database drivers 2.0 版一起使用而创建的。该 16 位版本是为用于 visual basic 4.0 版的 16 位版本而安装的。</P>
<P>dao 3.0 版随带在 microsoft access for windows 95、visual basic 4.0 版(32 位)、microsoft excel 7.0 版 和 visual c ++ 4.0 版中。dao 得到了增强,以支持任何兼容主机的单机接口。</P>
<P>dao 3.5 版随带在 microsoft access for windows 97 中,并且含有新的 odbcdirect com 对象。mfc dao 数据库类不包括这些对象的类。</P>
<P>#p#</P>
<P>最为重要的是,dao 接口是基于 ole com 的,它很好地安置 dao 以适应不断发展的技术和操作系统。</P>
<TABLE class=ln cellSpacing=0 borderColorDark=#ffffff align=center bgColor=#ddddd borderColorLight=#999999 border=1>
<TBODY>
<TR>
<TD bgColor=#ffffff><IMG src="/files/uploadimg/20070416/1154170.gif"></TD></TR>
<TR>
<TD class=it align=middle bgColor=#dddddd>示意图1</TD></TR></TBODY></TABLE>
<P>此处是 dao 层次结构图表。在顶端,将看到 dbengine 对象,该对象中含有所有其它对象。这是唯一没有集合的对象,因为您只能有一个引擎。但可以有多个工作区 (workspace)、数据库 (database) 等等,这正是余下的对象都有自己所属集合的原因。</P>
<P>在工作区中,可以有多个数据库,一个基本表 (.mdb) 或一个附加/链接的表。在每个数据库中将有一个或多个表、查询、记录集,而其中的每个表、查询、记录集不仅包含字段和(或)索引,还有其它类型的对象。</P>
<P>另外,与工作区连接的是用户对象和组对象,它们形成了 dao 的安全模型。</P>
<P>独立但与引擎对象连接的是 errors 对象。</P>
<P>errors 集合中对象的附加方式不同于其它 dao 集合。最详细的错误放在集合的末尾,最常规的错误放在开头。</P>
<P><STRONG>mfc 和 dao</STRONG></P>
<P>现在要谈的是 mfc 如何实现 dao。因为我们不是分别包装每个 dao 对象,所以实际上 mfc 会平展 dao 的层次结构。我们为您提供 8 个对象而不是 21 个对象。</P>
<P>我们封装所有的 dao 功能,除 security 对象外 - users 对象、groups 对象以及新的 odbcdirect 对象。这是我们有意而为。例如,我们觉得在查看安全性对象时,围绕它们创建类将不会给 dao 的使用添加任何值,因此还是让您直接调用 dao,来处理那些对象。这也是与 mfc 原则一致的:应该在对添加值的立场而言有意义的地方创建类。但我们仍会在 mfc technical note 54 中提供关于如何实现安全性模型的指导。</P>
<P>另外,我们还管理 dao 要将对象追加到集合的要求。在 dao 中,您创建对象,然后将它追加到集合中。除一种例外情况外,这种添加是自动完成的。对于这种例外情况,可作为一个单独的步骤来设置开发人员能否追加对象,这是很用的。</P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -