利用ADO扩展管理数据库-ADOXJRO
实用第一智慧密集数搭罐利用扩展管理数据库一、众所周知,最主要的特性之一就是可以用来开发数据库程序。但是在4以前数据库的开发主要是基于(数据库引擎)的,但存在很多问题,包括过于庞大、不易分发、不稳定等等,已经决定今后将放弃的进一步开发了。
幸运的是在5中包括了一个很重要的新特性那就是可以用0来开发数据库程序了。阳控件提供了对微软的0的封装(0属于微软通用数据存取架构的一部分),给我们提供了一组以外的数据库编程机制。0的功能已经是非常强大的了,但除此之外微软还提供了的扩展来进一步拓展了它的应用。接下来我们就来研究一下的扩展,第一部分主要是关于(数据定义语言)、安全机制(0)和及砒对象库(0)。第二部分我们要来研究一下多维(0)。的介绍0可以用来执行一系列用0无法单独实现的功能。
例如我们可以用0提取数据库的用户信息或创建新的用户账号。扩展了的对象模型,包括了10个新的对象,可以和0配合使用。比如我们可以用.对象来连接到一个数据源,并提取出元数据(注意:元数据是数据库的结构描述,象表、字段、索引、关键字段、存储过程等,而不是数据库包含的数据内容)。在现代大多数数据库使用来定义元数据。
在0出现以前,提取元数据的唯一的方法是使用衄对象的0-眦方法,而且要想创建新的数据库对象,我们还必须使用基于的对象和姗对象。0提供了一种不需要懂就可以操纵元数据的方式。注意:0并不支持所有的数据库,它只局限于微软的,代,以及其它几种数据库。要想详细了解这方面的信息,请参看:..。0的对象模型如图,图2显示了表的对象模型。
-的最上层对象是。
它包括表、视图、过程、用户以及账号。
对象可以用来打开数据库(通过0-对象),或创建一个新的数据库。到2.1版本为止,我们只能创建4.0数据库,在未来版本有可能扩展到其它数据库。我们可以通过对象对表、过程以及视图操作。比如,通过枚举表集合,我们可以知道当前数据库有哪些表。图0对象模型图2表的对象模型示意图表0对象的简单描述陈省对象说明龇包含描述数据源模式目录的集合,提供对表、视图、用户、过程和账号的操作。呲表示表、索引或关键字的列。叫表示在安全数据库内具有访问权限的帐号。表示数据库表的索引。表示数据库表中的主关键字、外部关键字或唯一关键字字段。表示存储过程或查询。7'曲表示包括列、索引和关键字的数据库表。表示在安全数据库中具有访问权限的用户帐号。
表示记录或虚拟表的过滤集。更进一步,我们可以获得一个表的字段、索引、关键字段等元数据信息。
通过用户和账号对象集合,我们可以获得数据库的安全信息(注意:这个功能只对安全数据库有效,对于数据库,我们必须在数据源连接字符串中包括..)另一个强大的功能是我们可以用对象来创建新的数据库,并通过表、字段、索引对象的方法向数据库添加表,字段,索引和关键字段。创建一个简单的察看器接下来我们就演示一下如何在中使用0。我们将创建一个应用程序,主要功能是::萄鳓舔越蓠酶晒每磷:潮盼:73数据实用第一显示数据库的元数据。显示数据库对象的属性。
显示视图和存储过程的源代码。我们先创建一个新的项目,在主窗体上放置下列控件:,和。完成的程序示意如图3。图3演示程序示意图接下来,我们必须引入的类型库,选择菜单项“,然后从类型库列表中选择—0.2.1盯船。
为了避免同已有控件名冲突,对0类要重新命名(比如11铀可以改成07),按按钮来生成接文件。会生成0且.文件,我们需要在项目的部分引用它。
现在我们创建一个菜单项,并生成一个事件处理函数,代码如下:.091《:):×:=《.,):0.1<>~::这里我们使用了实现在单元中的方法来显示标准的数据连接属性对话框(见图4)。注意:这里我们应该选择4.00作为数据源,连接到的样例数据库-.(别的库不行)。
然后程序会调用过程。
这个过程会把从数据源中提取的元数据显示在中爱玩传奇。源码如下:智慧密集图4数据连接属性对话框.(:):::0:::丁:::0::改变)匕怕:勺沙漏骂4:=.::::×:=,.7:17清和:1:.:,7连接数据源—::=1:添加表信,色.0:=1.::=.~1:=(0..):处理了段、索0投关键0:段(.,)::,77添加观吲伯息攀实用第一『:=1.1.(,77)::=.一1:=1.(,..);:添加过程信息0:=.(,7—)::=0.一1:=.,(.,..):.×):恢复缺省光标清空状态条,::..×:=7::.通过三个循环我们遍历了表、视图对象。每个对象都被放到了中的适当分支上,每个表都需要处理对应的字段、索引和关键字段列表。我们是通过毗‰过程来实现的,代码如下:.丁:下::丌)::::丁:;添加亨段信息.>:=:=..一1..(.):,)添加索引信息丁×>:=1.,×):=0.×.一1..(.×1):添加关键字段信息.>:=..(,)::=..一1.,..[1):这里我们边历了每个表对应的字段、索引、关键字段信息。
回到过程,会看到在循环视图对象前,我们执行了下盛大传奇列校验过程:..这是为了避免不支持视图的数据源可能带来的错误,函数代码如下:(:』).::::=:×:::智慧密集==数据为了获得更详细的对象信息,我们通过实现1控件的事件来显示元数据,代码如下:1(::0:丌):.<>.×1:(..×,×)::×(..,.×):7:(..×,.×):7:(×):77:(×)::(.):::我们通过调用、8、8过程来显示被选对象的属性,表2、表3、表4是相应对象的详细表2宇段对象属性属性说明描述列特性。61指示列的规定最大大小。指示列中数值的范围。指定表或列的父目录以便访问特定提供者的属性。
指示列中数值的最高精度。0咖指示相关表中相关列的名称(仅关键字列)。指示列的排序顺序(仅索引列)。
),表3索引对象属性属性说明指示索引是否被分簇。指示在索引字段中具有值的记录是否有索引项。指示索引是否代表表的主关键字。指示索引关键字是否必须是唯一的。
衰4关键字段一性属性说明王指示主关键字被删除时将执行的操作。
指示相关表的名称。聊指示列的数据类型。如指示主关键字被更新时会执行的操作。1蠕峨瓣够琢嘲嘲确蟪黜糙镬:删鳓碍潮醚。韵辫潞数据库实用第一智慧密集信息。
和过程显示视图和存储过程的源代码。8代码如下,8过程类似:《:)::州::::』::=+..1[.::=++77+([.)::=+““+:+(.1(.):啦(..):=『..1::=::=+““4+.』一1×::01.×:=::存储过程可以通过0砌对象获得。我们这里使用眦方法来获得啪对象的接,然后调用接的丽上方法来获得存储过程的源代码。现在我们知道如何使用0来获得数据源的元数据了。的另外一个强大的功能就是不需要复杂的语句就可以创建数据库。创建数据库首先我们需要创建对象的一个实例。
通过8工对象我们不仅可以指定要创建的数据库的类型,还可以指定数据库文件的位置。代码如下:]=7:.7:==.04.:[)=+::×:7创建对象的·个实例:=.:如果数据库已经存在,就删除它、剐:,创建新的.文件.:,指定活动连接.—;)创建好数据库后,我们要向库中添加表和字段:1)创建表对象的一个实例。2网民喜欢这网游)创建字段对象的一个实例。3)设定新字段的属性。4)继续添加新的字段5)重复第3、4步。6)添加新的表。
代码如下:,7筚步创建表对象的一个实例:=.:,毪蹙长.:=:...设定表所属的:=:第一步创建字段对象的-个实例:=.::=:,7,7第二步设定新字段的属性:=77:一:=:.:=:;7.:=。::第四步添加新的字段..(。0)::=¨:第五步重复第三、网步.(77,64):(7.。64):(。,64):(,128)::第。刊添加新的表..|]::=:接下来我们就可以添加索引和关键字段了。下面代码演示了如何给丑字段创建索引:×:=.:¨1:=×7::=¨:(7,64):77.:=::..(1×,):原理很简单,先创建一个对象,然后设定它的属性,指定索引如何处理,同字段相关联,最后添加到表中,关键字段实现原理类似。注意:生成的数实用第一智慧密集据库是无法用鼬97打开,因为只有2000才支持4.0生成的数据库,要想生成97的数据库,必须用3.5才行。到目前为止,我们还没有提到如何使用用户和账号对象,这是由于我们当前的项目是基于鸽数据库的,而这两个对象是88不支持的。
使用和对象另一个0的扩展是和对象(0)。
.能对不同的数据源操作,而0对象只对数据库起作用。也就是只能操作数据库。瓜提供了一组对象,可以创建、修改和同步数据库复制。核心对象是,主要用来创建新的,获得的属性,同步其它的改变。
0对象框架包括有对象,提供了一些引擎的特性,特别是能够压缩数据库,设定数据库密码,对数据库加密和从内存缓冲中刷新数据。对象模型如图5所示:圈50对象模型这里我们只简单介绍一下复制数据库。第一步,我们要创建一个酽鹊(设计原版),表明数据库将用来作为一个复制的数据源,可以用来复制。我们首先需要调用对象的方法。然后可以用毋和哆方法来改变数据库的阳畸状态。根据情况我们可以创建或者部分或者完全的设计原版的副本。
第二步,我们可以利用对象来定义更新规则。
最后,可以在两个副本之间保持同步完美国际,可以在上进行直接或间接的同步。如果是间接同步,我们需要使用微软的0带的复制管理器。要想在中使用0库,我们需要引入;扯02.1(2.1版本)的类型库。使用西对象数辚箩罐下面代码显示了如何使用对象来压缩-.Ⅱ(数据库,并创建一个新的压缩后的诵.数据库的副本.。
=7;=.4:7:替换下面的路径为微软例子库的真实路径=:.。:=:.:.(:)::;::::椭:仓这才发现SF4建对象:=.,设定数据源:=+=+:设定目的源:=+。=+:,7如果目标数据库存在,就删除它¨《):压缩数据库..(,):释放对象:=,:让我们稍微深入地理解一下压缩数据库的过程。表的页面首先被重组。压缩后,原来碎片的数据页面被放在相邻的数据库页面中,这可以极大地改进数据库的性能。通过删除原来只是被标记为删除的记录来回收未被使用的空间。自增加字段被重置,以便下一个分配的值可以保持连续。用来优化查询的表的统计信息被更新。因为统计信息被改变了,所有的查询都会被标记,下一次运行查询时,查询会被重新编译。结论本文介绍了两个0扩展:和以及和“对象(0)。我们简单研究了一下如何使用对象来获得数据源的元数据、如何创建新数据库和如何使用0来压缩数据库,并简单介绍了数据库复制过程。第二部分我们将要介绍—,它可以用来操作多维数据存储。
本文源程序可以从:19。
.下载。(收稿日期:2000年月18日).:硒睁啦玲酾硼卿嚼鳓酬诲·彝蛹醅::霉1.≥利用扩展管理数据库-、作者:陈省作者单位:刊名:电脑编程技巧与维护英文刊名:年,卷(期):2001(3)。