对象关系型数据模型

2024-09-25

对象关系型数据模型(共5篇)

对象关系型数据模型 篇1

将数据库系统应用到更广阔的领域中, 比如计算机辅助设计, 关系模型的局限性就暴露出来了。因此数据库研究者提出了一些新的克服关系模型限制的数据模型。其中最为重要的就是面向对象模型, 它的基础是面向对象程序设计范型。这里先阐述几个主要概念:对象标识、对象结构和类的概念、继承等。

面向对象的数据库经过十几年的发展, 已经日趋成熟, 有关的国际标准相继出台。ODMG (OMG所属的对象数据库管理组) 分别于1993, 1997, 2000年提出了对象数据库标准O D M G 1.0, O D M G 2.0, O D M G 3.0, 制定ODMG标准的目的是为了让ODBMS的用户编写的可移植的应用, 能运行在多个OODBMS的产品上。本课题的接口实现部分就是参照ODMG标准来实现。

ODMG对象模型主要包括以下基本概念。

(1) 数据建模的基本原语是对象 (Object) 和文字 (Literal) , 每个对象有一个唯一的标识符, 文字没有标识符。

(2) 对象和文字都可以划分为类型 (Type) , 同一类型的对象或文字具有相同的行为和状态, 对象可以称为类型的实例。

(3) 通过一组性质 (Property) 来定义对象的状态, 性质可以分为两种:对象的属性 (Attribute) 和对象之间的关系 (Relationship) 。

1 对象与对象标识

1.1 对象结构

对象是由一组数据结构和在这组数据结构上的操作的程序代码封装起来的基本单位。对象之间的界面由一组消息定义。一个对象包括以下几个部分。

(1) 属性集合:所有属性合起来构成了对象数据的数据结构。属性描述对象的状态、组成合特性。对象的某一属性可以是单值的或值的集合, 进一步地, 一个对象的属性也可以是一个对象, 即对象可以嵌套, 从而组成各种复杂对象。

(2) 方法集合:方法描述了对象的行为特征。方法的定义包括两部分, 一是方法的接口, 二是方法的实现。方法的接口用以说明方法的名称、参数和结果返回值的类型, 也称之为调用说明。方法的实现是一段程序代码, 用以实现方法的功能。

(3) 消息集合:消息是对象向外提供的界面, 消息由对象接收和响应。面向对象数据模型中的“消息”与计算机网络中传输的消息含义不同。它是指对象之间操作请求的传递, 而不考虑操作实现细节。

1.2 对象标识

面向对象数据库中的每个对象都有一个唯一的不变的标识称为对象标识 (OID) 。对象通常与实际领域的实体对应。现实世界中, 实体的属性值可能随着时间的推移会发生改变, 但是每个实体的标识始终保持不变。相应的, 对象的部分 (或全部) 属性、对象的方法会随着时间的推移发生变化, 但对象标识不会改变。

1.3 封装

OO模型的一个关键概念就是封装。每一个对象是其状态与行为的封装。

封装的意义在于将对象的实现与对象的应用互相隔离, 从而允许对操作的实现算法和数据结构进行修改, 而不影响接口, 不必修改使用它们的应用, 这有利于提高数据独立性。

2 类和类层次

在OO数据库中相似对象的集合称为类。每个对象称为它所在类的一个实例。一个类中所有对象共享一个定义, 它们的区别仅在于属性取值不同。可以看到, 类的概念类似关系模式, 类的属性类似关系模式中的属性:对象类似元组的概念, 类的一个实例对象类似关系中的一个元组。可以把类本身也看作一个对象, 称为类对象 (Class Object) 。

3 面向对象数据库的模式演进

面向对象数据库模式是类的集合。模式为适应需求的变化而随时间变化称为模式演进。模式演进包括创建新的类、删除旧的类、修改类的属性和操作等。在关系数据库系统中, 模式的修改比较简单, 主要有如下的模式修改操作。

(1) 创建或删除一个关系。

(2) 在关系模式中增加或删除一个属性。

(3) 在关系模式中修改完整性约束条件。

OODB应用环境对OODB模式演进提出了许多新的要求, 使得面向对象数据库模式的修改要比关系模式的修改复杂得多, 其主要原因有以下几点。

(1) 模式改变频繁。

使用O O D B系统的应用通常需要频繁地改变O O D B数据库模式。例如O O D B经常运用于工程设计环境中, 设计环境特征之一就是不断变化.设计自身在不断变化, 以纠正错误或修改设计使之更完美、更适合于实际:而当设计者对问题及其解决有更深刻理解时也会修改模式。

(2) 模式修改复杂。

从上面讲解的OO模型特征可以看到OO模型具有很强的建模能力和丰富的语义, 包括类本身的语义、类属性之间和类之间丰富的语义联系, 这使得模式修改操作的类型复杂多样。此外, OODB中模式演进往往是动态的, 动态模式演进的实现技术更加复杂。

3.1 模式的一致性

模式的演进必须要保持模式的一致性。模式的一致性是指模式自身内部不能出现矛盾和错误, 它由模式一致性约束来刻画。模式一致性约束可分为唯一性约束、存在性约束和子类型约束等, 满足所有这些一致性约束的模式则称为是一致的。

(1) 唯一性约束, 这一类约束条件要求名字的唯一性。

(2) 存在性约束, 存在性约束是指显式引用的某些成分必须存在。

(3) 子类型约束。

3.2 模式演进操作

下面给出一些主要的模式演进操作, OODBMS应该支持这些模式演进。

(1) 类集的改变; (2) 己有类的成分的改变; (3) 子势超类联系的改变。

3.3 模式演进的实现

模式演进主要的困难是模式演进操作可能影响模式一致性。面向对象数据库中类集的改变比关系数据库中关系模式的改变要复杂得多。因为类的修改操作可能会影响到其它类的定义。例如, 改变了一个类的属性名, 这需要所有使用该属性的地方都要改名。

因此, 在OODB模式演进的实现中必须具有模式一致性验证功能, 这部分的功能类似编译器的语义分析。进一步, 任何面向对象数据库模式修改操作不仅要改变有关类的定义, 而且要修改相关类的所有对象, 使之与修改后的类定义一致。所谓转换的方法是指在OODB中, 己有的对象将根据新的模式结构进行转换以适应新的模式。例如, 在某类中增加一属性时, 所有的实例都将增加该属性。这时还要处理新属性的初值, 例如给定一缺省初值, 或提供一算法来自动计算新属性初值, 还可以让用户设定初值。删除某类中一属性时只需要从该类的所有实例中删除相应属性值即可。

参考文献

[1]数据库系统基础Ramez Elmasri[M].人民邮电出版社.

[2]王意洁.面向对象的数据库技术[M].电子工业出版社.

对象关系型数据模型 篇2

在粗糙集的基本概念上,基于上、下近似集定义了二维离散空间中的粗糙区域和粗糙模型,用粗糙模型描述二维离散空间中的模糊地理对象,并给出了粗糙区域的3种类型:确定-确定类型、确定-模糊类型、模糊-模糊类型.在离散空间的空间连接计算理论RCC-D-5的基础上,定义了模糊地理对象拓扑关系之间的.拓扑约束关系,并依据概念临近推演和拓扑约束关系,研究得出二维离散空间中简单模糊地理对象之间的73种全拓扑关系,并基于4×4相交包含矩阵进行了描述,使得复杂的拓扑关系在计算机中描述和表达成为可能.

作 者:高振记 高勇 张毅 邬伦 GAO Zhen-ji GAO Yong ZHANG Yi WU Lun 作者单位:高振记,GAO Zhen-ji(北京大学地球与空间科学学院,北京,100871;北京大学深圳研究生院,广东,深圳,518055)

高勇,张毅,邬伦,GAO Yong,ZHANG Yi,WU Lun(北京大学地球与空间科学学院,北京,100871)

对象关系型数据模型 篇3

关键词:面向对象数据库技术,对象/关系映射技术,网络技术

通讯手段及通讯工具在实际应用过程中, 人们在互动交流过程中会受到范围及方式等方面的限制。但是伴随着互联网技术的发展及完善, 人们在互动交流过程中所具有的局限也被突破, 人们互动交流能够逐渐无线及普适, 网络技术的完善, 在其中起到关键作用, 能够有效推动互动交流的发展。

1 网络技术发展初期及其对互动交流的影响

1.1 网络技术的表现形式

网络技术在刚开始发展过程中, 最具有代表性的技术主要有两个, 分别是报文分组交换技术与WEB技术。报文分组交换技术主要表示的是将数据分解为到数据包内, 利用通讯阶段对于数据信息进行传输, 还能够有效保证数据信息的完整性, 其中主要特征就是在数据信息传输过程中, 容易出现数据包丢失的情况, 这就需要对于数据包进行重新传输, 能够有效降低节点在数据信息传输过程中的重要性, 网络系统内不同节点能够有效连接。WEB技术在实际应用中能够满足用具对于信息交流及搜索, 利用互联网技术提供真毒性服务, WEB技术产生最为显著标志就是图形浏览器的出现。

1.2 对互动交流的影响的表现

网络技术初期发展过程中, 网络互动交流形式主要特点就是延时通信的出现。网络技术在刚开始推出的之后, 主要目的就是满足军事在发展中的实际需求, 伴随着计算机技术不断完善, 已经逐渐成为人们实际生活中主要互动交流的方式。在这个时间段内, 网络互动交流最为主要的核心就是文字互动交流, 双方在实际共同交流过程中, 主要通过文本内容的方式进行沟通交流, 在这个过程中所出现的图形也是十分简单, 交流过程中并不需要受到时间及空间上面的限制, 能够根据自身实际情况传输电子邮件, 但是这个时间段内互动交流程度较低, 造成信息在沟通传输过程中容易出现延时性。

2 从面向数据库技术和对象/关系映射技术角度进行比较

2.1 面相数据库技术

面向对象数据库技术是数据库技术与面向对象技术发展到一定水平之下的成果, 在对于复杂对象进行描述的时候, 主要应用的方式是使用类的封装方式, 进而对于复杂对象的行为进行模拟。面向数据库技术在实际应有中最为显著特点就是代码及数据并不是独立存在的, 主要是通过函数关系对于数据进行计算。

2.2 对象/关系映射技术

面向对象软件在实际开发过程中, 根据有关软件开发方法, 进而形成了对象/关系映射技术。对象/关系映射技术是以关系模型数据库结构作为基础, 映射对象模型对于有关对象进行描述, 人们在实际操作过程中, 能够具体将所接触到的语句进行描述, 所应用的对象及操作方式十分简单便捷, 如图1所示, 为对象/关系映射技术结构示意图。

2.3 面向数据库技术与对象/关系映射技术的比较

面向数据库技术在实际应用中, 所应用的数据库类型是新类型, 并不是传统关系型数据库, 这种数据库类型能够有效解决传统数据库所具有的阻抗失谐问题进行解决。对象/关系映射技术在实际应用中, 能够有效将关系性数据库与对象数据进行连接, 承担着一个相互转化数据的责任, 但是在技术仅仅能够将数据库内的对象划分为表格, 并没有有效解决传统数据库类型所存在的阻抗失谐问题。

3 面向数据库技术和对象/关系映射技术的优点及缺点

3.1 面向数据库技术

面向数据库技术在实际应用中, 能够从本质上面解决传统数据库所存在的阻抗失谐问题, 维护性能显著提高。要是从维护角度进行分析, 面向数据库技术最为显著性能就是耦合性能十分突出, 能够在不同网络平台上面应用, 所应用的查询方式较为简单。虽然面向数据库技术在实际应用中拥有十分显著优势, 但是还存在一定缺点, 首先就是面向数据库技术无法兼容SQL标准, 无法对于现在关系数据库进行转换, 主要现在关系数据库所应用的接口都是SQL标准。

3.2 对象/关系映射技术

对象/关系映射技术在实际应用应用中拥有良好的数据库转换性能, 在对于数据操作过程中, 能够根据面向对象的形式, 提高数据库性能。在数据操作方面, 能够直接对于业务对象进行处理, 并不需要对于储存方式及语句进行分析, 同时在宽展及维护方面也具有重要作用。但是对象/关系映射技术在实际应用中却存在一定缺点, 最为主要的就是对象/关系映射技术并没有解决传统关系数据库所存在的阻抗失谐问题, 其次就是在数据缓存方面存在一定缺陷。

4 结论

简而言之, 在对于对象/关系映射技术与面向对象数据库技术比较分析之后, 能够发现对象/关系映射技术与面向对象数据库技术在实际应用中所存在的优势及缺点, 应用效果也存在一定差异, 能够有效推动对象/关系映射技术及面向对象数据库技术的共同发展, 对象/关系映射技术与面向对象数据库技术在数据库内共同应用, 对于数据库系统发展具有重要意义。

参考文献

[1]赖朝新, 瞿晓静.面向对象数据库技术的两种发展途径[J].现代情报, 2014 (11) .

[2]汪琛, 胡浩民.面向对象数据库技术的发展与前景[J].福建电脑, 2015 (05) .

[3]王意洁.面向对象的数据库技术[M].电子工业出版社, 2013 (03) .

[4]何治成.面向对象的电力系统异构应用信息共享研究[D].重庆:重庆大学, 2015 (06) .

对象关系型数据模型 篇4

关键词:数据库技术,关系数据库,面向对象数据库

计算机技术的几乎每一项内容都是“数据”这一核心展开的:数据的加工处理和存储,数据的传输与共享,数据的管理问题等。数据库技术作为应用系统的底层支撑技术与数据的管理、数据的存储、数据的处理等无不密切相关。随着计算机技术的飞速发展,新的应用系统要求数据库技术不断推陈出新,适应新的要求。下面主要论述数据库技术从关系数据库到面向对象数据库的发展历程。

1 关系数据库时代

计算机使用的初期数据管理功能主要是由文件系统来实现,文件的使用者对数据的操作繁琐而低效。60年代末,数据库技术应运而生,经历了层次数据库、网状数据库,发展到70年代的关系数据库时期。关系数据库理论的诞生特别是其标准查询语言SQL语言的发明,对数据库技术的发展起到了巨大的推动作用,SQL语言把早期数据库管理系统中各种独立的功能如查询、数据修改、数据定义和控制等集成在单一的语言环境内,因此达到了简单、易学、易用的目的。

关系数据库系统管理的数据以二维表的形式进行存储;表之间的数据联系是通过一个表的键与另一个表的键的连接来实现。关系数据库系统为其管理的数据提供并发控制、应急恢复和可伸缩性等功能。关系数据库系统提供了强大的查询功能以及十分方便、易于使用的非过程化查询语言“SQL”,这些优点使得关系型数据库得到广泛的应用。

随着计算机网络的发展和使用,计算机应用的网络化也同时推动了数据库系统的网络化。80年代后期,客户机/服务器(C/S)结构逐渐取代了传统的主机系统,在这种结构中应用系统一分为二,数据库服务器负责数据管理部分,客户机负责应用程序与用户的接口,彼此通过网络交换信息。

关系数据库也从传统的单机模式,演变成客户机/服务器结构中的数据库服务器模式。在数据库服务器中运行着各种类型的关系数据库产品。进入90年代,Internet/Intranet以及Web技术在全球被普遍接受。使得基于Internet/Intranet技术的计算环境被采纳的速度比历史上任何其他信息技术都要快。这种计算结构的实质就是将越来越多应用软件从“胖”客户机上移开,转移到应用软件服务器和数据库服务器上,从而使得大量的分散的客户机变“瘦”,使之易于维护和管理。

2 关系数据库存在的问题

计算结构模式的改变,重心的转移,对数据库服务器和应用软件服务器提出了新的要求。一方面要求数据库必须能够支持越来越复杂的应用程序,必须能够支持越来越多的用户,另一方面还要求数据库支持更多类型的数据。这些数据包括结构化数据以及大量非结构化的多媒体数据(如:图像、图形、资料、时间序列等)。传统的RDBMS在处理这些复杂的数据类型时,就显得有些力不从心。数据表达是一个问题,复杂数据类型的处理方法也是一个问题。解决这一问题的关键是在数据库系统中加入面向对象技术。

3 面向对象数据库的实现途径

在面向对象技术和数据库技术相结合的过程中,基本上是沿着两条途径发展的:一种是建立纯粹的面向对象数据库管理系统(即OODBMS),这种途径往往是以一种面向对象语言为基础,增加数据库的功能,主要是支持持久对象和实现数据共享。面向对象的数据库不仅在处理多媒体等数据类型时可以做到游刃有余,而且在应用系统开发速度和维护等方面有着极大的优越性。面向对象数据库系统产生于80年代后期,它利用类的设置来描述复杂对象,利用类中封装的方法来模拟对象的复杂行为,利用继承性来实现对象的结构和方法的重用。面向对象数据库系统对一些特定应用领域(例如CAD等),能较好地满足其应用需求。但是,这种纯粹的面向对象数据库系统并不支持SQL语言,完全失去SQL语言原有的优势,因而其应用领域受到了很大的局限。

另一种途径是对传统的关系数据库加以扩展,增加面向对象的特性,把面向对象技术与关系数据库相结合,建立对象关系数据库管理系统(ORDBMS),这种系统既支持已经被广泛使用的SQL,具有良好的通用性,又具有面向对象特性,支持复杂对象和复杂对象的复杂行为,是对象技术和传统关系数据库技术的最佳融合。这种类型的数据库被称为对象关系数据库。

国际著名的数据库专家,美国加州大学伯克利分校的教授MichaelStonebraker先生认为,对象关系数据库系统的四个主要特性是:SQL环境中对基本类型扩充的支持;对复杂对象的支持;对继承性的支持;对产生式规则系统的支持以及为完全支持这些特性所需满足的特殊要求,只有满足以上四个特性才算得上真正的对象关系数据库产品。

4 对象关系数据库的现状

目前各大数据库厂商纷纷推出具有面向对象特点的关系数据库产品。这些面市的产品尽管都不能完全符合对象关系数据库理论的所有要求,但都或多或少地包含了一些对象技术的特征。下面分别述评如下。

1)IBM公司的DB2

1995年7月,IBM公司交付了其对象关系型数据库管理系统DB2/V2。DB2/V2提供了一组广泛的新特征,这些特征组合起来可以支持集成的内容搜索。

利用由DB2提供的对象关系型特征,DB2的基于内容的搜索能力可以扩展到诸如文本、图像、视频、音频等新的数据类型。为了使这一扩展不仅可行,而且还易于实现,IBM同其客户和独立的软件开发商通力合作,创建了关系数据库扩展程序,这是一个预先包装的用户定义类型、用户定义函数、触发器、约束以及存储过程的集合,可以很容易地装入到DB2的SQL核心中,以支持集成内容搜索。使用关系数据库的扩展程序,用户可以把文本文档、图像、视频等数据同常规数据一样存储在DB2的表格中。

IBM推出的DB2/V2数据库系统包含了对用户自定义数据类型、用户自定义函数的支持,并且支持大型对象数据的存取和查询,这些都是对象关系数据库的一些基本特征。但DB2/V2对继承、多态等对象技术还没有支持。

2)Oracle公司的Oracle数据库系列产品

1997年6月25日,Oracle公司在全球举行了隆重的Oracle8产品发布会,Oracle8是一个紧密集成的对象关系数据库管理系统解决方案,它没有像其他的数据库产品那样只是在现有的关系数据库上附加一个采用对象技术的外壳,或者在关系数据库和客户端应用软件之间提供一个对象服务器网关。而是允许用户以处理关系数据的同样方式来处理对象数据,而且为处理对象数据专门设计了新功能。

当然,Oracle的数据库产品也只是在数据类型和内容上实现了面向对象的处理特征,其提出的包的概念在某种意义上实现了数据及其操作的封装,但是面向对象技术的重要特征诸如继承性、多态性等还没有实现。

3)Sybase公司的AdaptiveServer

在对象技术的实现方面,Sybase采用了“组件事务服务器”来支持分布式事务,支持对象管理,加入对特殊数据类型存储的支持,这些数据包括地理空间信息、时间序列数据、多媒体、图像内容等。Sybase虽然没有强调自己的数据库是对象关系数据库,但其产品中已经包含了某些对象技术。

对象关系型数据模型 篇5

将图像数据存在数据库中还是存在文件系统中是数据库应用程序编程中经常遇到的问题, 两种方式各有利弊, 也不能一概而论。但在大多数情况下, 对于KB级的图像文件来说, 最好还是存储在数据库表中以OLE对象 (SQL Server 2000中是image) 为数据类型的字段中。因为将图像数据文件存储在数据库中有许多优点。

图像跟着数据库一起走, 程序的安装和移植都很方便, 不用考虑文件系统及目录路径等问题, 容易管理。当图像数据与其他数据一起存储在数据库中时, 图像数据与其他数据可以一起备份和恢复。这样就不存在图像数据与其他数据不同步的问题, 而且也大大降低了其他用户无意中删除存储在文件系统中的图像数据及更改目录或路径的风险, 并且不需要为文件系统中的文件目录单独设置安全性。同时还可以对数据库系统进行优化处理以提高存取效率。总之, 将图像数据存储在数据库中是一种比较简洁谨慎稳妥的办法。

1 技术方法

在VB数据库应用程序编程中, 我们会经常需要存储一些图形图像、长文本、多媒体 (视频、音频文件) 等各种各样的文件, 如果在数据库中仅存储这些文件的路径信息, 尽管可以大大地减小数据库的大小, 但是由于文件存在磁盘上, 除了维护数据库外还要维护文件的路径信息, 这对于管理数据库很不方便。如果能够把这些文件的内容作为一个记录的一个字段值存储到数据库中, 这样文件的存储和读取就变成了简单的字段读写。现如今像SQL Server2000这样大型的数据库管理系统已经提供了多达2GB字节的字段类型 (TEXT、IMAGE、NTEXT) , 对于保存一般的文件已经足够了, 可以把需要保存的图形图像、影音视频文件等的内容存入到数据库中, 根据用户检索的信息, 再把对应的记录读出来, 存储到本地硬盘的一个临时文件中, 然后用其对应的程序打开它。为了读写BLOB (二进制大型对象) , ADO模型提供了两种方法即GetChunk和AppendChunk, 通过它们, 就可以像读写文件一样, 把这类文件的内容写进去也可以读出来。

目前将图像数据存储在数据库中有这样几种比较典型的技术方法:

利用数据控件和数据绑定控件, 利用这种方法, 不写或写少量代码就可以构造简单的数据库应用程序, 这种方法易于被初学者接受。

向数据库中添加需要存储的图片即存储图像文件的保存路径, 这种方法最简单快捷, 代码量较少。但是这种方法在运行速度和灵活性方面有一定的限制, 适合于初学者和一些简单的应用。

利用PropertyBag对象与Byte数组, 也无需对二进制文件直接进行存取, 不会产生临时文件, 代码编写简单, 操作步骤少, 所以也很适合初学者使用。

利用编写代码实现图片的存储与读取, 这种方法相对于前面3种方法来说, 代码量大, 但它操作灵活, 能够满足多样形式下的操作, 从而受到更多编程爱好者的青睐。但是涉及到的知识面相对要多一些, 不仅要掌握数据库的操作方法, 还要对VB文件系统中的二进制文件的读写操作有进一步的了解。这方面主要是运用ADO模型中Field (域) 对象的AppendChunk () 和GetChunk () 方法及Stream (流) 对象等方法。目前这两种方式因ADO模型在数据库编程中的通用性而得到广泛应用, 因其涉及长二进制数据的操作, 特别适用于图像影音文件在数据库中的存取操作, 具有更好的发展前景。

2 ADO模型存取数据库图片两种技术

2.1 Field (域) 对象的AppendChunk和GetChunk方法

BLOB (binary large object) 是相对于CLOB (字符型大型对象) 而言的, 即指二进制大型对象, 是一个可以存储二进制文件的容器。在计算机中, BLOB常常是数据库中用来存储二进制文件的字段类型。典型的BLOB是一张图片或一个影音文件, 由于它们的尺寸, 必须使用特殊的方式来处理。而AppendChunk () 和GetChunk () 方法就是ADO为处理这些BLOB字段提供的两种方法, 这两种方法是隶属于ADO模型的Field (域) 对象的, 它们是配套使用的一对方法。

其中Field.GetChunk方法返回大型文本或二进制数据Field对象的全部或部分内容。

语法格式:variable=Field.GetChunk (Size As long) 其中参数Size为长整型表达式, 等于所要检索的字节或字符数。

Field.AppendChunk将数据追加到大型文本、二进制数据Field或Parameter对象。

语法格式:Field.AppendChunk (Data) 其中参数Data为变体类型, 包含追加到对象中的数据。

使用Field对象的AppendChunk () 方法可将长二进制或字符数据填写到对象中。在系统内存有限的情况下, 可以使用AppendChunk () 方法对长整型值进行部分操作。使用Field (字段) 对象的AppendChunk () 和GetChunk () 方法时, 需要将图像数据进行分段读写, 计算稍微复杂一些、代码量相对也比较大。但此方法是通用性很强的一种方法。

2.2 Stream (记录流) 对象方法

这也是本文要重点介绍一种方法。ADO模型的Stream (记录流) 对象是专门用于流对象操作的, 它共有8种属性和13种方法, 其中有6个方法是直接读写对象和文件系统的, 因此它提供了更多针对二进制数据操作的属性和方法, 它借助VB的文件系统对图像文件的存取提供了一揽子解决的办法, 因此它有几个重要方法都是直接与临时文件的存取读写打交道的, 所以使用时也必须以VB的文件系统为操作对象, 而且它对图片、Word文档、AVI影像文件的操作均有着很强的通用性。

两种方法在使用方面各有所长, 读者可以针对自己的情况做出合理的选择。

ADO是微软公司的适用于各种类型数据的重要的高层活动数据访问接口, 是处理数据库信息的最新技术, 它是一个可编程的分层对象集合。它容易使用、高速、占用很少的额外内存, 并且只占用磁盘空间很小。正是基于ADO对象模型的基本知识, 并通过其Connection和Recordset对象以及ADO2.5中新出现的Stream对象对数据库应用程序编程中图像数据的存取进行介绍, 使读者在较短的时间掌握这一技术, 开发出切实可行的应用程序。

3 Stream对象存取图片文件的步骤

ADO模型中的Stream对象表示二进制数据或文本的流, 也是自ADO2.5中新出现的专门用于操作大型BLOB类型字段的对象, 因此它提供了诸多方便图像和大型文本操作的属性和方法。现将其中与图像存取操作相关的几个属性和方法作一简单介绍。

Type设置或返回Stream对象中的数据的类型。可选参数有:adTypeBinary=1或adTypeText=2。这里主要用adTypeBinary=1属性值。

Close用于关闭一个Stream对象。

LoadFromFile (FileName) 将FileName指定的文件装入对象中。

Open (Source, [Mode], [Options], [UserName], [Password]) 打开一个Stream对象。该方法有诸多参数, 但可以省略。在以下的示例中省略所有参数。

Read (Numbytes) 读取指定长度的二进制内容。不指定参数则默认读取全部数据。

SaveToFile (FileName, [Options]) 将对象的内容写到FileName指定的文件中。其中FileName就是指定的文件, 而Options存取的选项, 可选参数如下:adSaveCreateNotExist=1;adSaveCreateOverWrite=2。在以下的示例中用参数2。

Write (Buffer) 将指定的数据装入对像中。其中Buffer为指定的要写入的内容。

具体到实践中, 用Stream对象保存图片文件只需要这样简单的几个步骤:

(1) 首先声明并实例化Stream对象变量。 (2) 设置其Type属性为二进制类型。

(3) 打开Stream对象。

(4) 将指定的图片文件载入到Stream对象中。

(5) 用Stream对象的Read方法读取指定长度 (或全部) 的二进制内容存储到数据库字段中。

(6) 关闭Stream对象。

而读取图片文件的内容, 因为是从数据库中读取图片文件, 因此需要有个临时文件为过渡, 所以首先得声明一个字符型变量, 使其值指向一个临时文件, 接下来的步骤其中第1-3步骤与上面相似,

(1) 用Stream对象的Write方法将数据库中的二进制图片文件内容写入到Stream对象中。

(2) 用Stream对象的SaveToFile方法将Stream对象中的内容写到临时文件中。

(3) 关闭Stream对象。

然后将临时文件载入到VB图像框控件中以达到显示图像的目的, 最后将临时文件删除。这样便完成了将存储在数据库中的二进制内容读取并显示到图像框控件中的任务。

4 典型示例

在此以Visual Basic 6.0中文企业版为开发环境, 采用单机版工作模式, 利用adodb.stream对象对Access2003数据库关系表中图像数据的存取进行了初步探索实践, 现将学习过程及心得体会一并记录, 与诸位编程爱好者分享。

以数据库“Temp.mdb”中的“Table”表为基础, 设计简单的图片存取管理程序。

在此示例中引用的ADO对象为Microsoft ActiveX Data Objects 2.8 Library版本。

4.1 操作步骤

首先打开Microsoft Office Access2003新建→空数据库, 文件名为Temp, 使用设计器创建表, 新建字段名称为:姓名 (数据类型:文本) 、编号 (数据类型:文本) 、照片 (数据类型:OLE对象) 的3个字段, 另存为→表名称:Table, 设计好后关闭数据库。然后单击:工具→数据库实用工具→转换数据库→转换为Access97文件格式将设计好的数据库转换并在根目录下保存为同名文件。最终设计好的数据库设计示图界面如图1所示。

然后打开Microsoft Visual Basic 6.0中文企业版, 新建→标准EXE文件, 在工程→引用, 在可用的引用中选中Microsoft ActiveX Data Objects2.8 Library→确定。

4.2 界面设计

最终用户界面如图2图片管理程序设计界面所示。

4.3 代码编写

首先声明如下窗体级变量:

编写用于自动生成编号函数:

创建控件数组Command1用于图片管理操作:

创建控件数组Command2用于图片浏览操作:

在窗体的卸载事件中关闭记录集和数据库连接并释放资源:

在文本框的获得焦点的事件中自动生成编号:

在文本框离开焦点的事件中检查姓名是否重复:

4.4 运行效果

在进行存取数据后打开根目录下Temp数据库中的Table表可看到如图4所示界面。

可以看到照片字段中存储的内容显示的是长二进制数据, 这就是通过ADODB.Stream对象保存在数据库中的图片文件。

5 结语

相对于ADO模型的Field (域) 对象的AppendChunk () 和GetChunk () 方法, 用ADODB模型的Stream (记录流) 对象存取数据库图片的确有着其他同类方法难以比拟的优点, 它不涉及复杂的算法、代码简洁, 只需几行代码就可以存取图像数据。尽管它涉及到二进制数据的操作, 但它秉承了ADO模型不涉及控件而纯用代码方式编程的优点, 对存取二进制数据提供了诸多方便, 大大简化了图像数据在数据库中的的存取操作。

摘要:VB数据库中图像数据的存取对初学者来说是个难点, 而用ADO模型的记录流对象存取数据库图片的技术大大简化了存取长二进制数据的操作, 介绍了利用这一对象存储图片文件的方法, 使读者在较短的时间里掌握这一技术, 进而开发出切实可行的应用程序。

关键词:VB数据库编程,ADO对象模型,流对象,图像数据,存取操作

参考文献

[1]求是科技.Visual Basic6.0数据库开发技术与工程实践.人民邮电出版社, 2004.

[2]全国计算机等级考试四级教程-数据库工程师 (2008版) .教育部考试中心.高等教育出版社, 2007:269-312.

[3]刘志妩, 等.基于VB和SQL的数据库编程技术.清华大学出版社, 2008:226-239.

上一篇:等离子体切除术下一篇:高校项目