没有合适的资源?快使用搜索试试~ 我知道了~
要建立与数据源的连接,首先应构造一个CDatabase对象,然后再调用CDatabase的Open成员函数.Open函数负责建立连接,其声明为
资源推荐
资源详情
资源评论
要建立与数据源的连接,首先应构造一个 对象,然后再调用
的 成员函数. 函数负责建立连接,其声明为
!" #$%&
'#'(%)#*#
+,#"#(%
参数 指定了数据源名(构造数据源的方法将在后面介绍),在
# 参数中也可包括数据源名,此时 必需为 ',若在函
数中未提供数据源名且使 为 ',则会显示一个数据源对话框,用
户可以在该对话框中选择一个数据源.参数 说明是否独占数据源,
由于目前版本的类库还不支持独占方式,故该参数的值应该是 ,这说明
数据源是被共享的.参数 !" 若为 ' 则对数据源的连接是只读的.
参数 # 指定了一个连接字符串,连接字符串中可以包括数据源名、
用户帐号-(和口令等信息,字符串中的""表示要连接到一个
数据源上.参数 '# 若为 ',则会装载光标库,否则不装载,
快照需要光标库,动态集不需要光标库. 若连接成功,函数返回 ',若返
回 ,则说明用户在数据源对话框中按了 按钮。若函数内部出现
错误,则框架会产生一个异常。
下面是一些调用 函数的例子。
,.!%//在文档类中嵌入一个 对象
//连接到一个名为"!0#"的数据源
,.!12!0#2(%
//在连接数据源的同时指定了用户帐号和口令
,.!1' 2%!
0#%'-34%567892(%
,.!1'(%//将弹出一个数据源对话框
要从一个数据源中脱离,可调用函数 #。在脱离后,可以再次调用
函数来建立一个新的连接.调用 - 可判断当前是否有一个连接,
调用 :# 可返回当前的连接字符串。函数的声明为
#!#(%
-(#%//返回 ' 则表明当前有一个连接
#0;:#(#%
的析构函数会调用 #,所以只要删除了 对象
就可以与数据源脱离。
#! 类代表一个记录集.该类是 + 的 类中最重要、功能
最强大的类。
10.5.1 动态集、快照、光标和光标库
在多任务操作系统或网络环境中,多个用户可以共享同一个数据源。共享
数据的一个主要问题是如何协调各个用户对数据源的修改。例如,当某一个应
用改变了数据源中的记录时,别的连接至该数据源的应用应该如何处理。对于
这个问题,基于 + 的 应用程序可以采取几种不同的处理办法,这将
由程序采用哪种记录集决定。
记录集主要分为快照)#(和动态集"(两种,#!
类对这两者都支持。这两种记录集的不同表现在它们对别的应用改变数据源记
录采取了不同的处理方法。
快照型记录集提供了对数据的静态视.快照是个很形象的术语,就好象对
数据源的某些记录照了一张照片一样.当别的用户改变了记录时(包括修改、
添加和删除),快照中的记录不受影响,也就是说,快照不反映别的用户对数
据源记录的改变.直到调用了 #!<<=" 重新查询后,快照才会
反映变化.对于象产生报告或执行计算这样的不希望中途变动的工作,快照是
很有用的。需要指出的是,快照的这种静态特性是相对于别的用户而言的,它
会正确反映由本身用户对记录的修改和删除,但对于新添加的记录直到调用
=" 后才能反映到快照中.
动态集提供了数据的动态视.当别的用户修改或删除了记录集中的记录时,
会在动态集中反映出来:当滚动到修改过的记录时对其所作的修改会立即反映
到动态集中,当记录被删除时,+ 代码会跳过记录集中的删除部分.对于其
它用户添加的记录,直到调用 =" 时,才会在动态集中反映出来。本身应
用程序对记录的修改、添加和删除会反映在动态集中。当数据必须是动态的时
侯,使用动态集是最适合的。例如,在一个火车票联网售票系统中,显然应该
用动态集随时反映出共享数据的变化。
在记录集中滚动,需要有一个标志来指明滚动后的位置(当前位置)。
驱动程序会维护一个光标,用来跟踪记录集的当前记录,可以把光标理
解成跟踪记录集位置的一种机制。
光标库#"(是处于 驱动程序管理器和驱动程序之间的
动态链接库871(.光标库的主要功能是支持快照以及为底层驱动
程序提供双向滚动能力,高层次的驱动程序不需要光标库,因为它们是可滚动
的.光标库管理快照记录的缓冲区,该缓冲区反映本程序对记录的修改和删除,
但不反映其它用户对记录的改变,由此可见,快照实际上相当于当前的光标库
缓冲区.
应注意的是,快照是一种静态光标#(.静态光标直到滚动到
某个记录才能取得该记录的数据.因此,要保证所有的记录都被快照,可以先
滚动到记录集的末尾,然后再滚动到感兴趣的第一个记录上.这样做的缺点是
滚动到末尾需要额外的开销,会降低性能.
与快照不同,动态集不用光标库维持的缓冲区来存放记录.实际上,动态
集是不使用光标库的,因为光标库会屏蔽掉一些支持动态集的底层驱动程序功
能.动态集是一种键集驱动光标>"?#(,当打开一个动态集
时,驱动程序保存记录集中每个记录的键.只要光标在动态集中滚动,驱动程
序就会通过键来从数据源中检取当前记录,从而保证选取的记录与数据源同步.
从上面的分析中可以看出,快照和动态集有一个共同的特点,那就是在建
立记录集后,记录集中的成员就已经确定了.这就是为什么两种记录集都不能
反映别的用户添加记录的原因.
10.5.2 域数据成员与数据交换
#! 类代表一个记录集.用户一般需要用 5! 创建一个
#! 的派生类.5! 可以为派生的记录集类创建一批数据成
员,这些数据成员与记录的各字段相对应,被称为字段数据成员或域数据成员.
例如,对于表 6@17 所示的将在后面例子中使用的数据库表,5! 会
在派生类中加入 A 个域数据成员,如清单 6@16 所示.可以看出域数据成员与
表中的字段名字类似,且类型匹配.
表 10.2 stdreg32.mdb 中的 Section 表
CourseID Section InstructorI RoomNo Schedule Capacity
(Text)
No
(Text)
D
(Text)
(Text) (Text) (int)
+ B6@6 6 > 'C >?67 +56@?66 9@
+ B6@6 7 : 5-?6@DD B8<8@?E 6E
+ B7@6 6 : 5-?6@89 +57?8 7@
+ B7@6 7 +-BC 5-?6@E9 +58?9 7E
+ B7@7 6 > 5-?6@E9 +5F?6@ 7@
+ B7@7 7 : >?67 BF<8@?66 6E
+ B7@7 8 > 'C 5-?7@88 B8?9<8@ 6E
清单 10.1 派生类中的域数据成员
#<#!
G
<
. . . . . .
//GG H.-##!(
0,.#-%
0,.##%
0,.-#-%
0,.##,#%
0,.)!%
,."%
//II H.-
. . . . . .
I%
剩余16页未读,继续阅读
资源评论
xing2858
- 粉丝: 1
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功