科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道SQL Server MFC DAO 类和 MFC ODBC 类(3)

SQL Server MFC DAO 类和 MFC ODBC 类(3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

自 mfc 数据访问对象 (dao) 数据库类在 1995 年 10 月发布以来,mfc 数据库开发人员就已开始考虑该使用哪个类集。

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年9月1日

关键字: 数据库 SQL Server SQL Server 各版本

  • 评论
  • 分享微博
  • 分享邮件

此处是 dao 层次结构图表。在顶端,将看到 dbengine 对象,该对象中含有所有其它对象。这是唯一没有集合的对象,因为您只能有一个引擎。但可以有多个工作区 (workspace)、数据库 (database) 等等,这正是余下的对象都有自己所属集合的原因。 0c%:Dz4  
<XswjAM  
!@ 2Lx(  
在工作区中,可以有多个数据库,一个基本表 (.mdb) 或一个附加/链接的表。在每个数据库中将有一个或多个表、查询、记录集,而其中的每个表、查询、记录集不仅包含字段和(或)索引,还有其它类型的对象。 rM]w6;(|  
u:FRCQ1&  
;sHuZ6fx  
另外,与工作区连接的是用户对象和组对象,它们形成了 dao 的安全模型。 +a9fu&V  
 oa25B;eA  
7g-oXKH  
独立但与引擎对象连接的是 errors 对象。 MqQx(}p>%  
%4F5I5`n  
ugvKc  
errors 集合中对象的附加方式不同于其它 dao 集合。最详细的错误放在集合的末尾,最常规的错误放在开头。 3'K';|n  
r pz"8B3i  
gv\#\t}'  
mfc 和 dao ge$[&rj  
'77-Q  
4\/KIuV  
现在要谈的是 mfc 如何实现 dao。因为我们不是分别包装每个 dao 对象,所以实际上 mfc 会平展 dao 的层次结构。我们为您提供 8 个对象而不是 21 个对象。 wh/ G/  
<8RZ\@ltI  
!Pr>0  
我们封装所有的 dao 功能,除 security 对象外 - users 对象、groups 对象以及新的 odbcdirect 对象。这是我们有意而为。例如,我们觉得在查看安全性对象时,围绕它们创建类将不会给 dao 的使用添加任何值,因此还是让您直接调用 dao,来处理那些对象。这也是与 mfc 原则一致的:应该在对添加值的立场而言有意义的地方创建类。但我们仍会在 mfc technical note 54 中提供关于如何实现安全性模型的指导。 K>8o -= +  
/Eg@"3D]  
GI5|Amq:  
另外,我们还管理 dao 要将对象追加到集合的要求。在 dao 中,您创建对象,然后将它追加到集合中。除一种例外情况外,这种添加是自动完成的。对于这种例外情况,可作为一个单独的步骤来设置开发人员能否追加对象,这是很用的。 }c"4Gia'o  
"n_1K:xaj  
xL%nuyua=  
虽然可能用 odbc 数据库类进行动态绑定,但实现这一目的的功能并非 mfc 类的内置功能。它被置入 dao 数据库类,您可以相当轻松地进行动态绑定。现在我们的第二个演示将更多地谈及这一点。 >Y'h8n!74  
R&Oart{  
(|-NG\zR  
dao 提供来自 sql 的数据定义语言 (ddl),以便您创建数据库、表、记录集等。在 odbc 中没有 ddl。 3>L"B 'd  
GaN2y  
<+ZLf&  
最后,当您需要时,总是可以对基础 dao ole 对象进行直接调用。 V&Pq1Ib>r  
4Ets|YClU  
?e\%1u  
mfc dao 数据库类的层次结构 F5fZR(N?q  
y2:Hk5s1l2  
c;#FZr1  
/[:j9x2 _  

SQL Server MFC DAO 类和 MFC ODBC 类(3)

 : Ptb?p  
H APK  
u125t<Gt}  
五个由 cobject 派生的 mfc dao 类(cdaoworkspace、cdaodatabase、cdaotabledef、cdaoquerydef 和 cdaorecordset)具有该基础类的所有功能。 A"w6F,H`  
v5#3KU  
d*?Sx`T?&  
cdaoexception 由 cexception 派生得到,具备该类的优点,包括显示来自基础 dao errors 对象的错误消息的能力。 Q`X^W  
'p bfW  
G zz<0e2  
如前面提到的那样,cdaorecordview 由 cformview 派生得到,而 cformview 又由 cscrollview 派生得到,依次类推。可以看到 cdaorecordview 类在快速而轻松地实现基于窗体的数据显示方面所具有的全部优点。此外,还有对于 cdaorecordview 的向导支持。该类中的功能实质上是与 crecordview 类一样的。 0%z6/e<n  
J/A,!:!`  
ah0/xWT+  
cdaofieldexchange 类支持由 dao 数据库类使用的 dao 记录字段交换 (dfx) 例程。如果要创建自定义的 dfx 例程,只要直接调用该对象即可。 ,f7A!G#3  
itrRpi W7'  
X@2'Yg[  
mfc dao 数据库类 k"U%]Flt  
*VRaq ke  
-X/03l &8  
cdaoworkspace 封装 dbengine 对象和 workspace 对象。mfc dao 类提供工作区的事实非常重要。odbc 数据库类不同时支持多个数据库连接。 <~5oEs&m8f  
wc$; X]  
wm{=A%t^  
事务处理是在 dao 数据库类中的 workspace(工作区)级别完成的,而不是在 odbc 类中的 recordse(记录集)级别完成的。一个事务可能会影响所有打开的数据库和记录集,或者您可以隔离事务,使其只会影响指定的数据库,等等。 1\UikOfo5  
MK^hxg!  
*.K^' eXe  
多数时候,您不必担心工作区对象的创建。如果您未创建,mfc 就将为您打开一个工作区对象。如果您需要的话,dao 数据库类可支持多个工作区。 HFl\~|K_E  
?=9'(H5_  
G^Y 4S  
最后,您不必担心工作区对象超出范围或是在数据库会话完成前关闭。可以使用工作区指针访问工作区集合,访问数据库集合,以及访问数据库引擎的属性等。 9jI1*i%d"\  
xyL'/!g,  
>o]EI}V  

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章