简谈VB中用数据库存取图片的简便方法

时间:2022-04-21 04:39:37

简谈VB中用数据库存取图片的简便方法

摘要:VB数据库中图像数据的存取对初学者来说是个难点,文章总结了绑定图片控件、存储图片文件路径、利用PropertyBag对象与Byte数组中转三种较为简便的方法以供初学者参考。

关键词:VB;Data控件;数据库;图片;存取;路径;PropertyBag;Byte数组

文章编号:1672-5913(2010)08-0125-04

中图分类号:G642

文献标识码:B

图像数据的存取对初学者来说是个难点,而当前的VB教学因课时较短,所选教材或讲授过程对数据库一章要么忽略要么只是简单地介绍,很少涉及到图像的存取问题,而专业数据库开发书籍中的大量源代码又让初学者看得头疼,所以本文总结了3种相对简便的方法以供参考。

为顺利运行程序,以下每种方法中,图片文件夹和数据库文件、VB程序文件同时存储在同一目录下。

1 绑定图片控件

实现思路:用VB自带VisData建立数据库,把图片存储在数据库表的Binary字段中,通过常用工具箱中Data控件与Image控件绑定,添加CommonDialog部件用以选择图片文件,在Image的DblClick事件中打开通用对话框,用LoadPicture函数把选定的图片载入Image,用Data控件的四个箭头浏览记录。

1.1建立图片文件夹

建立图片文件夹bmp,把准备好的图片(本例选用bmp、jpg、gif格式)放入其中,以备程序运行时添加和修改用。

1.2建立数据库

启动外接程序下的可视化数据管理器VisData,建立stu数据库,新建xs表,包含学号、姓名、照片(类型Binary)3个字段。因Binary型字段在表中无法直接操作,所以生成表后并不需添加记录,等程序运行时添加即可。

1.3界面设计

在窗体上添加2个标签、2个文本框,2个命令按钮,1个Data控件,1个图像框,1个CommonDialog控件;设置图像框的BodyStyle属性为1,Stretch属性设置为True;设置Data控件DataBaseName属性为stu.mdb,RecordSource属性为xs,设置Textl、Text2的DataSource属性Datal,Textl的DataField属性为姓名,Text2的DataField属性为学号:标签与命令按钮属性设置如图1所示。

1.4代码编写

Data控件自动提供了修改现有记录的能力,当直接改变和DATA绑定的控件的值后,只需单击Data控件上任一箭头,即可保存所做的修改。为防止任意修改,本例中在窗体的Load事件里使文本框只读(Locked属性为False)和图象框禁用(Enabled属性True),并在调用记录集的AddNew和Update方法中根据需要进行了改变。完整源码如下。

2 存取图像文件的路径

实现思路:VisData数据库建库,图片以路径的形式存储在文本型字段中,用Data控件绑定存储路径的字段,用CommonDialog选择图片,如在指定图片路径下不存在该图片,则调用API函数CopyFile复制图片到指定路径,再用LoadPicture函数把图片载入Image,利用Data控件的四个箭头浏览、保存记录。

2.1建立图片文件夹

建立图片文件夹pic,把准备好的缺省图片文件Rose.bmp放入其中,其他图片文件可现在放入也可在运行时选择并复制。

2.2建立数据库

启动VisData建立数据库fm.mdb,表cy,包含姓名、照片2个Text类型字段,并设置姓名字段的缺省值“Rose”,照片字段的缺省值“pic\Rose.bmp”,以备新增记录时Reposition事件代码的正常运行。

2.3设计界面

界面设计同方法二,只是照片字段绑定的是Text2而非Imagel,具体设计如图2所示。

2.4代码编写

因与Data控件绑定的是存储路径的字段,为随记录的变化而动态把字段存储的路径赋值给Image控件的Picture属性,本方法调用了Data控件的Reposition事件。完整源码如下:

3

利用PropertyBag对象与Byte数组

实现思路:Access2003建库,图片存储在OLE类型字段中,引用ADO 2.7 library进行数据库连接,用PropertyBag对象与Byte数组中转存取图片。

3.1数据库设计

启动Access2003,建立数据库book.mdb,表shu,包含书名(文本类型)、图片(OLE对象)2个字段。因程序中Byte数组存取的是长二进制数据,所以不要在表建立后通过“插入对象”命令输入图像数据。

3.2界面设计

新建工程,引用ADO 2.7,界面具体设计如图3所示。

3.3代码编写

本文中主要列出了数据库的连接、图片的显示与保存代码,而记录的浏览与增删通过调用记录集的AddNew、Delete、Move等方法实现,记得在相关方法后用ShowData显示数据,核心代码如下:

(4)窗体载入时用ADODB建立数据库连接,再调用ShowData函数显示数据。

4 结语

除本文介绍的3种方法外,数据库存取图片的常见方法还有两种:一种是利用ADO对象的AppendChunk和GetChunk方法,这涉及到对二进制数据的读写和临时文件的建立操作,步骤多,操作复杂,不适合初学者;第二种是利用ADO的Stream对象,虽Stream对象的引入已大大简化了二进制字段的操作,但还是要留下临时文件。与此两种方法相比,笔者所介绍的三种方法都无需对二进制文件直接进行存取,不会产生临时文件,代码编写简单,操作步骤少,所以很适合初学者使用。

上一篇:探讨“计算机专业英语”的词汇教学 下一篇:考试题库统筹建设的研究