利用VC技术

时间:2022-10-19 01:37:40

利用VC技术

【摘 要】本文详细介绍并使用了基于VC6.0的开发技术。使学员掌握如何在ACCESS数据库中存取大二进制数据。我们以.BMP格式的图片的存取为例。简单的介绍了存取的方法。

【关键词】二进制对;ADO;存储结构

1.ORACLE数据库简介

Oracle数据库是以高级结构化查询语言(SQL)为基础的大型关系数据库。通俗地讲,它使用方便逻辑管理的语言操纵大量有规律数据的集合,是目前最流行的服务器/客户机体系的数据库之一。

1.1 Oracle 的特点

Oracle7.x以来引入共享SQL和多线索服务器体系结构。这减少了Oracle的资源占用,增强了Oracle的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户而在高档的平台上可以支持成百上千个用户。

提供了基于角色(Role)分工的安全保密管理。在数据库管理功能,完整性检查,安全性,一直性方面都有良好的表现。

提供了与第三代高级语言的接口软件PRO*系列,能在C,C++等主语言中嵌入SQL语句及过程化(PL/SQL)语句对数据库中的数据进行操作。

1.2 Oracle 的存储结构

物理结构。Oracle数据库在物理上是存储于硬盘的各种文件,它是活动的,可扩充的,它随着数据的添加和应用程序的增大而变化。

逻辑结构。Oracle 数据库在逻辑上是由许多表空间组成的。主要分为系统表空间和非系统表空间。非系统表空间内存储着各项应用的数,索引,程序等相关信息。要建立较大的Oracle 应用系统时,应先创建它所独占的表空间,同时定义物理文件的存放路径和所占硬盘的大小。

Oracle以稳定并适合作为大型应用的数据库平台而著称。 但他的可操作性不强,不是和中小型应用软件系统。一般不选择为小型应用数据库平台。

1.3 BLOB的起源

数据库在当今的应用越来越广泛了,同样伴随着领域的广泛,存储的内容也不在是只有数值、字符、boolean几种类型,而是越来越多样化。在这样的前提下就出现了Blob类型。

Blob是指二进制大二进制对象也就是英文Binary Large Object的所写,由此可见这个类型都是用来存储大量数据而设计的,BLOB是用来存储大量二进制数据的。

1.4 BLOB的概述

1.4.1大对象类型概述

大对象类型BLOB全称为Binary Large Objects,即二进制大对象。可以把BLOB区别为三种形式:声像数据、二进制数据和大文本数据。因此,最常见的应用就是存储图形、声音等对象,此外,大二进制对象、OLE对象也可以通过BLOB类型存入数据库,如果文本对象过大,超出了文本类型的规定长度,则必须用BLOB字段进行存储。我们在经常使用的编程环境中并不能直接支持BLOB字段,因此需要调用相应的函数完成BLOB的使用。不同的数据库系统对大二进制对象类型的支持不同,常用数据库系统支持的大二进制对象数据类型。

1.4.2大二进制对象的存取方法

(1)利用MFC提供的CLongBinary类。VC存取大二进制对象数据有众多方法,如OLE、ActiveX等,而VC的MFC提供的CLongBinary类可以方便地实现存取BLOB字段。使用CLongBinary类可以存取超过MAXINT数目的数据,最大为可以得到的内存容量。但数据完全保存在内存中,对超大量数据消耗太大。

(2)利用ODBC的SQLGetData和SQLPutData函数。对于不能存储在单一缓冲区中的数据,在行中的其他数据已被获取之后,可以直接用SQLGetData分批从驱动程序检索这些数据。为了从一列检索长数据,应用程序首先调用SQLFetchScroll或SQLFetch移动一行,并且调用SQLGetData获取绑定列的数据。SQLPutData允许在应用程序语句执行时,把参数或字段送到驱动程序。该函数用来把字符或二进制数值送到字符、二进制或数据源指定类型的字段。它可以传递任何类型的数据,但对字符和二进制数据可传递部分数据、绑定缓冲区并让驱动器从缓冲区中检索数据。

(3)使用ADO存取BLOB数据。

可以使用ADO中的AppendChunk函数来存取BLOB数据。AppendChunk包含在Field对象中,原型如下:HRESULT AppendChunk (const_variant_t & Data );从函数原型中可以看到关键的问题是需把二进制数据赋值给VARIANT类型的变量。对应于保存数据时我们所使用的AppendChunk函数,读取数据应该使用GetChunk函数,GetChunk的原型如下:_variant_t GetChunk (long Length );给出数据的长度后GetChunk将返回包含数据的VARIANT类型变量,然后我们可以利用SafeArrayAccessData函数得到VARIANT变量中指向数据的char *类型的指针,以方便处理。

1.4.3数据转换过程中大二进制对象处理方法

在数据转换中,首先取出源数据源的元数据,判断源数据源和目的数据源中是否存在字段为大二进制对象的类型。对于源数据源中的每个大二进制对象字段的数据,选择相应的大二进制对象读取方法,把此大二进制对象数据取出后保留在一个临时文件中,然后在目的数据库插入数据,遇到大二进制对象字段时,选择相应的大二进制对象存取方法,再从临时文件中依次读出数据插入到指定字段中。

2.什么是ADO

ADO是ActiveX数据对象(ActiveX Data Object),这是Microsoft开发数据库应用程序的面向对象的新接口。ADO访问数据库是通过访问OLE DB数据提供程序来进行的,提供了一种对OLE DB数据提供程序的简单高层访问接口。ADO技术简化了OLE DB的操作,OLE DB的程序中使用了大量的COM接口,而ADO封装了这些接口。所以,ADO是一种高层的访问技术。

2.1 ADO的对象

ADO是目Microsoft通用的数据库访问技术。ADO编程模型定义一组对象,ADO对象模型包含9个对象:Connection,Recordset,Record, Command,Parameter,Field,Property,Stream和Error.

2.2该程序主要用到的4个对象

Connection对象

2.3说明

Connection 对象代表与数据源进行的唯一会话。如果是客户端/服务器数据库系统,该对象可以等价于到服务器的实际网络连接。取决于提供者所支持的功能,Connection 对象的某些集合、方法或属性有可能无效。

2.4 Error对象

Error 对象包含与单个操作(涉及提供者)有关的数据访问错误的详细信息。

3.说明

任何涉及 ADO 对象的操作都会生成一个或多个提供者错误。每个错误出现时,一个或多个 Error 对象将被放到 Connection 对象的 Errors 集合中。当另一个 ADO 操作产生错误时,Errors 集合将被清空,并在其中放入新的 Error 对象集。

上一篇:配网检修安全技术分析 下一篇:单芯电力电缆护层过电压保护