在数据库中存取图片的方法技巧

  • 格式:pdf
  • 大小:236.78 KB
  • 文档页数:1

18科技资讯

科技资讯 SCIENCE & TECHNOLOGY INFORMATION2011 NO.19SCIENCE & TECHNOLOGY INFORMATION信 息 技 术

图像数据的存取对初学者来说是个难

点,而当前的VB教学因课时较短,所选教材

或讲授过程对数据库一章要么忽略要么只

是简单地介绍,很少涉及到图像的存取问

题,而专业数据库开发书籍中的大量源代

码又让初学者看得头疼,所以本文总结了3

种相对简便的方法以供参考。

1 利用VB内部控件绑定图片

1.1实现思路

用户添加或修改图片时控制使用COM

MONDIALOG的SHOWOPEN对话框,然后

记录通用对话框的FILENAME到变量A,再

使用APP.PATH找到到特定目录下的该图

片文件,改变窗体上放置图片控件的属性

即可显示。

1.2实现方法

(1)在窗体上建立IMAGE控件,名为

IMAGE1。

(2)用DATA控件得到数据源表。

(3)建立“更改图片”按钮COMMAND1,

其代码为:

Private Sub Command1_Click()

CommonDialog1.FileName=""

CommonDialog1.Filter="文件bmp*.

bmp文件JPG*.JPG文件GIF*.GIF"

CommonDialog1.ShowOpen

Dim a As String

a=CommonDialog1.FileTitle 注释:得

到不含路径文件名

If a<> "" Then

Image11.Picture = LoadPicture(App.

Path amp; "\bmp\" amp; a)

注释:\bmp\是我用于存取图片的本系

统文件夹下的一个子文件夹。

Data1.Recordset.Edit

Data1.Recordset.Fields("tp")=a注释:

TP是存取图片名称的字段。

Data1.Recordset.Update

End If

End Sub

2 在VB中用ADO控件存取数据库中的图

2.1数据库的设计

数据库可以采用微软的Access97或者

SQL Server来进行,首先新建一张表,取名

为Table,添加三个字段,分别是:姓名Char

型(SQL Server中)文本型(Access中);编号

Char型(SQL Server中)文本型(Access中);

照片image型(SQL Server中)OLE对象

(Access中),设计好后存盘。

2.2程序的编写在数据库中存取图片的方法技巧

柴荣君(延安大学西安创新学院理工系 西安 710100)

摘 要:在VB中,用数据库存取图像数据是很重要的技术方法,对初学者来说是个难点,本文章就我在日常的学习和利用中总结了控件绑定图片、ADO控件存储图片文件、用其缺省数据库的二进制类型字段来存放图形图像数据三种较为简便的方法以供参考。关键词:Data控件 数据库 图片 存取 路径中图分类号:TP316文献标识码:A文章编号:1672-3791(2011)07(a)-0018-01

运行VB,新建一个工程。本程序采用

ADO控件和动态链接库访问数据库,需要

加入ADO的运行库,单击“工程\引用”菜

单,出现引用对话框,选择Microsoft

ActiveX Data Objects2.0 Library并确定。

添加一个Form,四个Label控件,两个

TextBox控件,一个PictureBox控件,一个

ADODC控件,三个CommandButton控件,一

个CommandDialog控件,如果ADODC和

CommandDialog控件没有出现在工具框上,

请单击菜单“工程\部件”。

给各控件定义相关常用属性:下面是

程序代码:

Private Sub Form_Load()

Constr=〃DSN=image〃′定义ODBC

连接

ADOCon.Open Constr′创建一个连

ADORst.Open〃table〃,ADOCon,

adOpenDynamic,adLockOptimistic

′打开一个ADO动态集表名为table

Set AdoCtr.Recordset=ADORst′将动

态集赋给ADO控件

End Sub

Private Sub PreView_Click() ′显示

打开文件的公用对话框,选择需要加入数

据库的图片

CDlg.Filter=〃位图(*.bmp)|*.bmp

CDlg.ShowOpen

FileName=CDlg.FileName

PicBox.Picture=LoadPicture(FileName)

′预览图片

End Sub

Private Sub Save_Click()

ADORst.AddNew′新增纪录

ADORst(〃姓名〃).Value=Names.

Text′给动态集的第一个字段赋值

ADORst(〃编号〃).Value=Numb.

Text′给动态集的第二个字段赋值

Set ADOFld=ADORst(〃照片〃)′给

ADODB.Field对象赋值

Call SaveToDB(ADOFld,FileName) 

′调用子程序,给第三个字段(image)赋值

ADORst.Update

End Sub

3 使用其缺省数据库(Access格式)的二

进制类型(Binary)字段来存放图形图像数据

可建立包含图像的数据库,只是图像的格

式受限制(缺省为.bmp类型)

(1)定义数据库结构用数据管理器(datam

anager)建立一个包含表ImgTable的数据库Imge1.mdb。其中表ImgTable的结构定义为:

字段名No、类型Integer ImgData、Binary这

里,同时预先建立几个ImgData内容为空的

记录,供测试用。

(2)添加控件及代码。

在Form1上画出标签(Label1)、按钮

(Command1)、图片框(Picture1)、数据控件

(Data1)各一个,属性及代码如下:

Data1.DatabaseName=″C:

VB40IMGE1\MDB″

Data1.RecordSource=ImgTable

Label1.DataSource=ImgTable

Label1.DataField=No

Picture1.DataSource=ImgTable

Picture1.DataField=ImgData

SubCommand1_Click()′从Clipboard截

取图像数据到图片框控件中

Picture1.Picture=Clipboard.GetData()

End Sub

(3)往Clipboard送图像可采用各种支持

Clipboard的图像编辑器,如在Photoshop上

处理好图像,然后将其“拷贝”或“剪切”至

Clipboard。

(4)从Clipboard截取图像到数据库

切换至VB,运行Form1。用鼠标点击按

钮Command1,将图像从Clipboard“粘贴”到

图片框中。然后,利用数据控件将当前记录

往后(或往前)滑动,图片框中的图像便自动

保存至数据库中。

4 结语

除本文介绍的3种方法外,数据库存取

图片的常见方法还有两种:一种是利用

ADO对象的AppendChunk和GetChunk方法

以及利用ADO的Stream对象,这涉及到对

二进制数据的读写和临时文件的建立操

作,步骤多,操作复杂,不适合初学者,但还

要留下临时文件。

参考文献

[1]沈洪.VB程序设计案例汇编[M].清华大

学出版社,2010,5.

[2]黄振轩.宋卫海.Vb程序设计与数据库

[M].山东科学技术出版社,2009,9.

[3]刘柏林.Vb数据库程序设计实验指导

[M].西安交通大学出版社,2009,3..com.cn. All Rights Reserved.