VB实现图像在数据库的存储与显示

2016-02-19 14:22 26 1 收藏

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是VB实现图像在数据库的存储与显示,一起来学习了解下吧!

【 tulaoshi.com - 编程语言 】

摘要本文以VB6与Access97作为开发工具,介绍了图像在数据库中的存储与显示技术。
  
  关键词数据库,数据控件,二进制,图像存储,图像显示,ADODB,Recordset
  
  数据库是数据管理的最新技术,是计算机科学的重要分支,是现代计算机信息系统和计算机应用的基础和核心。在科学技术高速发展的今天,在信息资源无处不在、无处不用,已成为各部门的重要财富的时候,对于从事程序开发的人员来说显得尤为重要。
  
  如今,对数据库的操作不仅仅满足于对字符和数字的单一操作,图像的存储与显示已显得尤为重要。下面作者将以VB6.0与Access97作为开发工具,分别介绍两种图像显示与存储的方法。
  
  利用数据控件和数据绑定控件
  
  利用这种方法,不写或写少量代码就可以构造简单的数据库应用程序,这种方法易于被初学者接受。在举例之前,先把数据绑定功能简要的说明一下,凡是具有DataSource属性的控件都是对数据敏感的,它们都能通过数据控件直接使用数据库里的数据。比如CheckBoxControl,ComboBoxComtrol,TextBoxComtrol,PictureBoxControl,ImageComtrol…因为这种方式涉及到的知识点比较少,也比较容易理解,不多作说明,现直接介绍编程步骤。
  
  1、从数据库中显示所需要的图片
  
  首先,添加一个Data数据控件,设置它的DatabaseName和RecordSource属性,
  
  ->strPath=App.Path
  IfRight(strPath,1)""Then
   strPath=strPath&""
  MyData.DatabaseName=strPath&"ExampleDB.mdb"'数据库存地址
  MyData.RecordSource="Info"'表名->
  第二步,添加Image控件用来显示图片,设置它的DataSource和DataField属性。例如本例中:Image1.DataSource="MyData"和Image1.DataField="MyPhoto"。然后设置其它具有数据绑定功能的控件用来显示所要的其它内容,经过这两步的操作,运行程序就可以显示你要的数据了。
  
  2、向数据库中添加需要存储的图片
  
  首先,利用数据控件所具有的AddNew属性,添加一个按钮,双击后添加如下代码MyData.Recordset.AddNew
  
  第二步,为Image控件图片指定图片路径Image1.Picture=LoadPicture("图片路径"),经过这两步的操作,就可以向数据库中添加图片了。
  
  这种方法最简单快捷,要写的代码量很少。但是这种方法在运行速度和灵活性方面有一定的限制,适合于初学者和一些简单的应用,要想灵活多变的显示图像,下面介绍的方法或许更适应您的要求。
  
  利用编写代码实现图片的存储与显示
  
  这种方法相对于方法一来说,代码量大,但是它操作灵活,能够满足多样形式下的操作,受到更多编程者的青睐。但是涉及到的知识面相对要多一些,不仅要掌握数据库的操作方法,还要二进制文件的读写作进一步的了解。关于数据库及二进制文件的基本操作很多参考书上都介绍的比较详细,需要时请查阅即可。在编程之前把本部分用到的变量说明如下:
  
  ->DimRSAsNewADODB.Recordset
  DimChunk()AsByte
  ConstChunkSizeAsInteger=2384
  DimDataFileAsInteger,Chunks,FragmentAsInteger
  DimMediaTempAsString
  DimlngOffset,lngTotalSizeAsLong
  DimiAsInteger->
  1、从数据库中显示所需要的图片
  
  第一步首先打开数据库,看有没有要查找的内容,有则继续执行,没有就退出
  
  ->RS.Source="select*fromInfoWhereName='"&sparaName&"';"
  RS.ActiveConnection="UID=;PWD=;DSN=TestDB;"
  RS.Open
  IfRS.EOFThenRS.cCose:ExitSub->
  第二步,读出长二进制数据即图片数据,把它转换成图片文件,操作过程如下
  
  ->MediaTemp=strPath&"picturetemp.tmp"
  DataFile=1
  OpenMediaTempForBinaryAccessWriteAsDataFile
  lngTotalSize=RS!MyPhoto.ActualSize
  Chunks=lngTotalSizeChunkSize
  Fragment=lngTotalSizeModChunkSize
  ReDimChunk(Fragment)
  Chunk()=RS!MyPhoto.GetChunk(Fragment)
  PutDataFile,,Chunk()
  Fori=1ToChunks
  ReDimChunk(ChunkSize)
  Chunk()=RS!MyPhoto.GetChunk(ChunkSize)
  PutDataFile,,Chunk()
  Nexti
  CloseDataFile->
  第三步,关闭数据库,这样就可以显示所要的图片了。
  
  ->RS.Close
  IfMediaTemp=""ThenExitSub
  Picture1.Picture=LoadPicture(MediaTemp)
  IfPicture1.Picture=0ThenExitSubj->
  2、向数据库中添加需要存储的图片
  
  向数据库添加存储的图片是显示图片逆过程,只要掌握了显示图片的操作,存储图片的操作也就迎刃而解了,下面将操作步骤介绍如下
  
  第一步首先打开数据库,过程如下:
  
  ->RS.Source="select*fromInfo;"
  RS.CursorType=adOpenKeyset
  RS.LockType=adLockOptimistic
  RS.ActiveConnection="UID=;PWD=;DSN=TestDB;"
  RS.Open->
  第二步,把要存储的图片转换成二进制长文件存入数据库中,操作过程如下
  
  ->RS.AddNew
  DataFile=1
  OpenstrPathPictureForBinaryAccessReadAsDataFile
  FileLen=LOF(DataFile)'文件中数据长度
  IfFileLen=0Then:CloseDataFile:RS.Close:ExitSub
  Chunks=FileLenChunkSize
  Fragment=FileLenModChunkSize
  ReDimChunk(Fragment)
  GetDataFile,,Chunk()
  RS!MyPhoto.AppendChunkChunk()
  ReDimChunk(ChunkSize)
  Fori=1ToChunks
   GetDataFile,,Chunk()
   RS!MyPhoto.AppendChunkChunk()
  Nexti
  CloseDataFile->
  第三步,更新纪录后,关闭数据库,就完成了数据图片到数据库的存储。
  
  ->RS.Update
  RS.Close
  SetRS=Nothing->
  两种方法在使用方面各有所长,读者可以针对自己的情况做出合理的选择。->

来源:http://www.tulaoshi.com/n/20160219/1606858.html

延伸阅读
标签: Web开发
如何在数据库中用好Transaction? 在ASP的实际操作中,总会发生这样的情况,如在银行,从我的帐户往费文华的帐户划款, 我的帐户显示已经划出,但因银行的系统出现故障,导致费文华帐户的数据库更改失败, 这应该怎样处理呢?我帐户的金额应该没有损失吧? 你的利益当然没有损失,已经更改的帐户数据库资料会自动恢复。 这里用到的就是互动功能...
用VisualBasic5.0作为数据库开发平台 3.0版以后的VisualBasic具有数据库连接和数据处理功能,因此完全有资格作为数据库应用程序的开发环境。Microsoft公司把许多新的数据访问功能加到VisualBasic中,使得该产品成为桌面数据库市场中Access、FoxPto及ParadoxforWindows的直接竞争者。与普通的数据库系统相比,用VisualBasic作为数据库开发平...
目前,绝大多数的数据库参考书都介绍了ODBC的手工配置方法,或者介绍了如何在代码中进行ODBC配置。但这两种方法都有一定的局限性:不是当程序最终完成并分发到用户手中后,还需要为用户配置ODBC,显得既麻烦又不符合专业软件的要求;就是得编写复杂的更改操作系统注册表文件的程序,十分烦琐。本文从ADO(ActiveXDataObjects)入手,介绍无需配置...
[关于判断输入数据是否在数据库中的方法。] 问题:假如你想输入一个用户姓名,那么如何判断该姓名在数据库中是存在的呢;或者你输入了一个密码,如何判断它是正确的呢?我在这里总结了几种:1. 使用find()方法读出数据到一个datatable,给它建立主键。然后定义一个datarow变量,使其等于datatable.find(“输入的待判断的值对应的主键̶...
在VisualBasic数据库编程中,应用数据绑定组合框和数据绑定网格等控件实现了数据的选项录入、选项增减与选项编辑,提高了数据录入效率和准确性。 高效准确地录入数据已成为mis系统急待解决的问题,也是衡量mis系统成功的重要标志。本文在VisualBasic数据库编程中应用数据绑定组合框和数据绑定网格等控件实现了数据的选项录入、选项增减...

经验教程

173

收藏

87
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部