用VB存取SQLServer2000数据库中图片文件的方法_第1页
用VB存取SQLServer2000数据库中图片文件的方法_第2页
用VB存取SQLServer2000数据库中图片文件的方法_第3页
用VB存取SQLServer2000数据库中图片文件的方法_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2012-07-19#锦#州2师0专1计2算-机0系7-1于9占#虎#2#0#12-07-19#摘 要利用 vb6.0 中 ado field 对象和 stream 对象,实现对 sql server2000 数据库中图像数据的存取。关键词vb6.0 sql server2000 图片存取1. 引言在数据库应用系统开发中,经常要对大容量的图片进行存取,如在档案管理系统中存取人员的照片。而 sql server2000 不支 持 insert 和 update 语 句 对 image 数 据 类 型 字 段 进 行 编辑,因此需编写专门过程来处理图像字段。笔者结合自己的实际应用,给出了实现此功能

2、的方法,愿与同仁共享。2. sql server2000 中图像数据的存储机制在 sql server2000 数据库中,对于小于 8000 个字节的图像数据可以采用二进制型(binary、varbinary)来表示,但通常要保存的图片一般都大于 8000 个字节。sql server 提供了一种机制,能存储每行大到 2g 的二进制对象(blob),这类对象可包括 image、text 和 ntext 三种数据类型,其中 image 数据类型存储的是二进制数据。vb6.0 存取 sql server 中 blob 数据有两种方法。一是利用 ado field 对象的 appendchunk 和

3、 getchunk 方法。二是利用 stream 对象的 loadfromfile 和 savetofile 方法。为了更好说明这两种方法,本示例程序存储图片采用 ado field对 象 的 appendchunk 方 法 , 而 读 取 图 片 采 用 stream 对 象 的savetofile 方法。3. 示例实现步骤及代码在 sql server2000 中创建数据库 dagl。在 dagl 中创建表 student,包括 stu_no (char 型,存放学号)、stu_name(char型,存放姓名)、stu_photo(image 型,存放照片)三个字段。在 vb 的“引用”对

4、话框中选择 microsoft dao 3.6 objectlibrary 和 microsoft activex data objects 2.5 library,在 vb 的“部件”对话框中选择 microsoft common dialog control6.0。新建工程,设置从 sub main()启动,创建一个模块 mod-ule1,其代码如下:public rst as adodb.recordset 定义 sql server 的全局记录集public cur_record as adodb.recordset 定义临时记录集,保存照片用public cnn as adodb.c

5、onnection 定义一个网络数据对象public netpath as string 定义网络服务器路径public function connectstring () as string 返回一个数据库连接connectstring = driver=sql server;server= & netpath &database=daglend functionsub main()netpath = winsql & ;uid= & sa & ;pwd= & sa& ; 提取网络服务器路径set cnn = new adodb.connection 创建数据库连接对象dim stokens

6、() as stringstokens = split(sql) 用系统 split 函数产生一个包含各个子串的数组set executecnn = new adodb.connection 创建连接executecnn.open connectstring 打开连接set executerst = new adodb.recordset 创 建 记 录 集 对象executerst.open trim $(sql), executecnn, adopenkeyset,adlockoptimisticset executesql = executerst 返回记录集对象end function

7、新建窗体 form1。窗体上添加两个文本框 text1 和 text2,分别用于输入和显示学号和姓名。一个图像框 image1,其 stretch属性设为 true,用于显示照片。一个通用对话框 commondialog1,用于输入图片文件。四个命令按钮,“添加(command1)”用于保存数据,“查询(command2)”用于显示数据,“退出(command3)”用于退出系统,“添改照片(command4)”用于输入照片。各过程代码如下:private sub command1_click() 将窗体输入的数据和图片保存到数据库rst.addnewrst.fields(0) = trim (

8、text1.text) : rst.fields(1) = trim (text2.text)if isnull (cur_record.fields (2) = false then rst.fields (2) =cur_record.fields(2)rst.updateend subprivate sub command2_click() 查询并显示数据库中的学生记录rst.movefirstif rst.fields(0) trim(text1.text) thenrst.movenextelse 以下程序用于将记录集当前记录的数据添加到窗体的各输入控件中text1.text = i

9、if(isnull(trim(rst.fields(0), , trim(rst.fields(0)text2.text = iif (isnull (trim (rst.fields (1), , trim (rst.fields(1)image1.picture = loadpicture()if not isnull(rst.fields(2) then 从数据库中读取图片,加载至图像框dim stm as adodb.streamset stm = new adodb.streamstm.type = adtypebinarystm.opencnn.open driver=sql se

10、rver;server=database=dagl 连接网络数据库form1.show 1end sub&netpath& 传递参数 sql 传递查询语句,msgstring 传递查询信息,自stm.write rst.fields(2).value2012身-以0一7个-记1录9集#对#象#的形#式#返#回#2012-07-19st#m.s#av#et#ofi#le #a2#pp0.#pa1th 2&-0te7mp-.jp1g9,a#ds#ave#cr#e-#public function executesql (byval sql as string, msgstringateoverwr

11、iteend ifend ifend subprivate sub command3_click() 结束程序运行set rst = nothing : set work_rst = nothing: endend subprivate sub command4_click () 用通用对话框输入图片,并将图片文件保存至临时记录集commondialog1.filter = 位图(*.jpg)|*.jpg| 位图(*.bmp)|*.bmp 设置文件过滤器commondialog1.initdir = app.path & 备用图片 commondialog1.showopen 显 示 通 用

12、对 话 框控 件 的 打 开对话框if trim(commondialog1.filename) then 选择了文件image1.picture = loadpicture(trim(commondialog1.filename) 预览图片cur_record.addnewdim bytedata() as byte 定义数据块数组dim numblocks as long 定义数据块个数dim filelength as long 标识文件长度dim leftover as long 定义剩余字节长度dim sourcefile as long 定义自由文件号const blocksize

13、 = 4096 定义每次读写块的大小dim i as long 定义循环变量sourcefile = freefile 提供一个尚未使用的文件号open trim (commondialog1.filename) for binary accessread as sourcefile 打开文件filelength = lof(sourcefile) 得到文件长度if filelength = 0 then 判断文件不存在close sourcefileelsenumblocks = filelength blocksize 得 到 数 据 块 的leftover = filelength mo

14、d blocksize 得到剩余字节数cur_record.fields(2) = nullredim bytedata(blocksize) 重新定义数据块的大小for i = 1 to numblocksget sourcefile, , bytedata() 读到内存块中cur_record.fields (2).appendchunk bytedata () 写 入记录集next iredim bytedata(leftover) 重新定义数据块的大小get sourcefile, , bytedata() 读到内存块中cur_record.fields (2).appendchunk

15、 bytedata () 写 入 记录集close sourcefile 关闭源文件end ifcur_record.updateend ifend subprivate sub form_load()set cur_record = executesql(select * from student , msg-text) 执行查询,用于存入照片set rst = executesql(select * from student , msgtext) 执行查询操作,用于处理记录end sub本文程序示例已在 visual basic6.0 中调试通过,使用者可以此为基础,根据需要加以适当修改就

16、可以直接应用。参考文献1高春艳,刘彬彬,王斌.visual basic 开发技术大全m.北京:人民邮电出版社,2007.42李淑华.vb 程序设计及应用m.北京:高等教育出版社,2004.4(上接第 206 页) 给我们的教学带来了很大的困扰。据 2007 年5 月教育部公布的2006 年全国教育事业发展统计公报显示,高等教育招生数和在校生规模持续增加,普通高校的师生比为1:17.93,这大大高于美国 1:14.2 以及经合组织国家 1:14.4 的比例。严峻的形式迫使我们不得不寻找新的教学方法和教学手段来缓解师资不足造成的教学压力,优化教育资源。现代社会正步入信息时代,互联网的飞速发展正影响

17、和改变着我们的生活,这同时也为 cai 技术在大学英语课堂教学中的应用提供了契机。第三,在大学英语课堂教学中应用 cai 技术也是实施素质教育的需要。为适应时代发展的需要,培养现代化建设的新型人才,必须要实施素质教育,把学生从传统教学模式的弊端中解放出来,以培养他们的实际能力,提高他们作为后备人才的竞争力。而素质教育的实施有赖于教学模式的改革与教学手段的提高,教育部高教司司长张学尧曾指出:要想提高人才的竞争力,首先要解决交流工具问题。结合我国大学英语的教学现状与高等教育的办学力量,推广多媒体课堂教学模式无疑是解决该“交流工具问题”的一种可行方法。四、结语总而言之,犹如生产力的提高必须借助于生产

18、工具的改革一样,有什么样的工具水平,就有什么样的生产力水平。在“科技兴国”、“科技兴省”、“科技兴市”、“科技兴农”的大潮中,教师作 为科学知识的传播者,更应该认真的思考“科技兴教”的 问题。如果我们的教学还停留在“一张嘴巴”、“一支粉笔”、“一块黑板”这样一种近乎刀耕火种的年代,那么我们的教学只能是一种技术含量较低的劳动密集型产业,其教学效率不高,教学质量较低实属在所难免。当信息革命的浪潮滚滚而来,人们的工作方式、思维方式和生活方式正在悄悄发生着变化。此时,如何充分运用现代教学技术武装我们的教学,启发学生的思维,培养他们的创新能力,对原有教学生产方式进行一场革命,这正是教育实践的呼唤,是时代的呼唤。大学英语本身丰富多彩的内容早已为 cai 技术的施展提供了广阔的舞台。在大学英语课堂教学中应用 cai 技术,能从根本上改变教与学的方式,从而成为英语教学中的一个重要环节。它不但可以拓展传统英

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论