关于VB 与Access 中图片的存取问题

2014-04-29 21:09钱晓燕
中国信息技术教育 2014年22期
关键词:对象

钱晓燕

摘 要:在数据库应用系统中,经常需要对图片进行处理,包括图片在数据库中的直接存储和只将图片地址存储于数据库中两种存储方式。本文主要论述了图片的存储方式、读取方式,它们各自的优缺点以及怎样存取才能达到效率最高。

关键词:移植性 数据负担 OlE 对象 图片地址

中图分类号:G718       文献标识码:A 文章编号:1674-2117(2014)22-00-01

在教学中,我们常常会用VB及Access做些小的数据库应用系统,如学籍管理系统、考试系统、图书管理系统等,在这些数据库应用系统中,经常需要对图片进行处理。图片在数据库中应该如何存取、怎样存取才能达到效率最高,是我们最常碰到又急需解决的问题。

1 图片在数据库中的存储

以考试管理系统为例来说,在考试报名界面上必须有考试照片,而这照片必须存入后台数据库中。图书管理系统新书入库时需将新书封面图片存入数据库等。

一般来说,图片在数据库中的存储有两种方式:直接将图片存储在数据库中和在数据库中存储图片地址。

1.1 直接将图片存储在数据库

这种存储方式采用的是数据流技术。数据库设计时,存储图片的字段数据类型定义为“OLE对象”。要插入图片直接双击该字段即可。若要在程序中写入数据库,实现代码如下:

SUB  SFILE()

DIM  STR  As ADODB.STREAM

DIM  REAS ADODB.RECORDSET

DIM  STR  AS STRING

SET  STM = NEW ADODB.STREAM

STM.TYPE= ADTYPEBINARY

STM.OPEN

STM.LOADFROMFILE APP.PATH+”\ABC.JPG”

SET  RE= NEW ADODB.RECORDESET

RE.OPEN”SELECT *  FROM  IMG” ,STM,1,3

RE.ADDNEW

RE.FIELDS(“PHOTO”)=STM.READ

RE.UPDATE

RE.CLOSE

STM.CLOSE

END SUB

从代码看图片操作与其他字段写入数据库基本一样,只不过使用的是流对象。它的优点是移植性好,不受系统前台程序约束,可在不同地方使用;缺点是加大了数据库的负担,在图片量大的情况下会导致数据读取、备份等操作缓慢。

1.2 将图片地址存储在数据库中

这种方式对数据库的操作简单,主要操作都在程序与操作系统之间的通信上了。只要将存储图片的字段数据类型定义为字符型即可。其操作与存储字符数据相同,用这样的方式首先要在代码中获取图片的地址,其他与存储普通类型数据代码类似。它的优点是只存储字符数据,数据库负担小,易于读取备份等;缺点是系统移植不方便,需要同时移植图片文件夹。

以上的两种方式都各有缺点,具体选用哪种方法要看所做系统的具体情况而定,一般来说,考虑到数据库的优化,一般采用存储图片地址这种存储方式。

2 图片从数据库中的读取

图片存入数据库是为了后期前台使用,如查询某考生的报考信息,则要调出考生照片,查询某本书籍资料,也要有相应的封面图片信息调出。

图片的存储有两种方式,相应的,从数据库中读取图片也有两种方式。

2.1 读取直接存储在数据库中的图片

由于存储时使用的是流对象 ADODB.STREAM,那么读取也需要流对象,代码如下:

SUB  RFILE()

DIM STM  AS ADODB.STREAM

DIM RE  AS  ADODB.RECORDSET

RE.OPEN “ select top 1* from  img order by  id desc”,  iConc, adOpenKeyset ,  adLockReadOnly

SET STM =NEW ADODB.STREAM

STM.MODE=ADMODEREADWRITE

STM.TYPE= ADTYPEBINARY

STM.OPEN

STM.WRITE RE(“PHOTO”)

STM.SAVE TOFILE APP.PATH&”\ABC.JPG”

IMAGE1.

PICTURE=LOADPICTURE(APP.PATH&”\ABC.JPG”)

RE.CLOSE

STM.CLOSE

END SUB

2.2 讀取将地址存储在数据库中的图片

将地址存储于数据库中的图片则容易处理,直接调用获取字段值,再使用LOADPICTURE 函数显示图片即可。例如,要实现如图窗体功能,代码如下:

PRIVATE  SUB  COMMAND1_CLICK()

DIM CN AS ADODB.CONNECTIN

DIM RS AS ADODB.RECORDSET

DIM STR AS STRING

SET CN= NEW ADODB.CONNECTION

SET RS=NEW ADODB.RECORDSETCN.OPEN“PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=C:\EXCISE\FILE.MDB;PERSISR SECURITY INFO =FALSE”

SQL=”SELECT *  FROM  STUDENT  WHEREXM=”张一””

Rs.open sql,cn ,1,1

TEXT1.TEXT=RS(“XM”)

TEXT2.TEXT=RS(“SEX”)

STR=RS(“PHOTO”)

IMAGE1.

PICTURE=LOADPICTURE(STR)

END SUB

由上述代码可知,图片的读取主要是获取路径后,使用函数LOADPICTURE 来显示。当然读取图片需要原来的路径,否则将无法显示。

总之在设计的数据库应用系统中采用什么样的图片存取方法,如何使系统更快捷高效地完成任务,需要根据实际情况及需要去进行选择。

(江苏省如东县中等专业学校,江苏 如东 226400)

参考文献:

[1]徐安东.visual basic 数据库应用开发教程[M].北京:清华大学出版社,2006.

[2]谭浩强.visual basic 程序设计[M].北京:清华大学出版社,2009.

[3]greg perry.学用 visual basic 6.0[M].北京:清华大学出版社,2011.

[4]刘涛.visualbasic数据库系统开发实例[M].北京:人民邮电出版社,2003.

猜你喜欢
对象
神秘来电
涉税刑事诉讼中的举证责任——以纳税人举证责任为考察对象
晒晒全国优秀县委书记拟推荐对象
判断电压表测量对象有妙招
攻略对象的心思好难猜
复杂高阶对象的预测PI(D)控制
基于熵的快速扫描法的FNEA初始对象的生成方法
区间对象族的可镇定性分析
《陷辽记》中辽世宗祭奠对象考辨
试论统一战线学的研究对象