VB存取BLOB数据的方法及应用

2009-03-10 09:50武金萍崔冬华
中国教育信息化·高教职教 2009年1期

武金萍 崔冬华

摘 要:本文介绍了在VB中利用ADO的AppendChunk方法在数据库中存取BLOB数据的具体方法,并给出实现图像存取显示的完整工作过程,为多媒体信息管理系统的开发提供了有效的解决方案。

关键词:VB 数据库 ADO BLOB图像存取

中图分类号:TP311.134.3 文献标识码:B 文章编号:1673-8454(2009)01-0082-05

一、引言

在使用数据库的过程中,除了保存大量的文字信息以外,我们经常要存储一些较大的二进制数据对象,像图形、长文本、多媒体(视频、音频文件)等,例如:一个学生管理系统就需要对每个人的照片进行保存,以便对每个人的信息进行处理。这些数据被称之为二进制大对象BLOB(Binary Large Object),亦称为大对象类型数据。[1]二进制大对象、OLE对象可以通过BLOB类型存入数据库,如果文本对象过大,超出了文本类型的规定长度,则必须用BLOB字段进行存储。[2] 将BLOB数据存储在数据库的相应字段中,其存取的方式与普通数据有所区别。我们在经常使用的编程环境中并不能直接支持BLOB字段,因此需要调用相应的函数完成BLOB数据的使用。本文介绍在VB中,如何通过ADO的AppendChunk方法,将BLOB数据的写入操作。

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

可以使用ADO中的AppendChunk方法来存取BLOB数据。AppendChunk包含在Field对象中,语法如下:[3]

ADO对象.Recordset.Fields(字段). AppendChunkData

其中,参数Data包含追加到数据库中的BLOB数据。

通常的处理步骤如下:

(1)用二进制方式打开BLOB数据文件;

(2)定义一个字节类型的数组,数组大小为文件长度;

(3)将文件保存到数组;

(4)使用ADO对象的AppendChunk方法写入数据库。

三、二进制大对象处理方法的具体实现

在得到图片数据并将其保存到数据库中时,要使用ADO的AppendChunk方法。[4]程序界面如图1所示,单击“图片输入”按钮,打开通用对话框,选择指定的图形文件到数据库;在浏览记录时可以显示图片;单击“图片删除”按钮,删除已加载的图片。

首先,在Access中创建一个数据库文件Student.mdb,在该库中建立一个表(表名为jbqk),字段如表1所示。

接着,在VB中创建一个工程,在form1窗体上添加ADO控件、命令按钮、图像控件、通用对话框、文本框和标签控件。将Adodc1控件连接到数据库Student.mdb,指定记录源为“jbqk”表。

所用的控件及属性设置见表2。

具体的窗口代码如下:

(1)为数据库添加图片

Private Sub Command1_Click()

Dim a()As Byte ′定义一个动态数组为字节类型

CommonDialog1.ShowOpen ′显示打开对话框

Open CommonDialog1.FileName For Binary As #1′以二进制读方式打开源文件

fl = LOF(1)′获得文件长度

ReDim a(fl)′设置数组大小为文件长度

Get #1, , a ′读文件到数组中

Adodc1.Recordset.Fields("照片").AppendChunka

Close #1

Image1.Picture = LoadPicture(CommonDialog1.FileName)′更新Image1内的图形

End Sub

(2)数据库中图片数据的删除

Private Sub Command 2_Click()'单击命令按钮2实现数据库中图片的删除

Adodc1.Recordset.Fields("照片").AppendChunk""

Adodc1.Recordset.Update

Image1.Picture = LoadPicture("")

End Sub

四、结束语

Visual Basic 6.0为存取BLOB数据提供了灵活的接口。本文所阐述的方法不但适用于图像文件,同样适用于其它类型的文件。数据库中BLOB数据的处理方法很多,不同的程序设计语言针对不同的DBMS,其处理方法都有差异。图片的出现为Visual Basic程序增添了美丽的情调,使程序更富魅力、更具专业。

参考文献:

[1]魏文胜.在VB中存取SQL Server 2000二进制数据的方法[J].电脑知识与技术(学术交流),2006(20):42-43.

[2]龚沛曾,杨志强,陆慰民. Visual Basic程序设计教程(第三版)[M].北京:高等教育出版社,2007.

[3]郑阿奇.Visual Basic实用教程(第二版)[M].北京:电子工业出版社,2003.

[4]余璆. VB对底层访问的典型例子[J].计算机应用与软件; 2004(11):115-117.