扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:赛迪网技术社区 来源:赛迪网技术社区 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 _
: 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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者