发信人: kingywq() 
整理人: gzwsh(2002-11-05 22:57:29), 站内信件
 | 
 
 
【 在 wfgdx 的大作中提到:】
 :主要是对图形图像进行读取,然后输入到数据库中。数据库类型用ACCESS,但不知道如果读取图形数据,在VB里用二进制方法读取后再写成新文件总会少点东西,是不是读取的时候没做好?
 :......
  
 
 主题:kingywq对VB程序中数据库的图片处理的解决方法
     
             
 
            VB程序中数据库的图片处理的解决方法 
 
 
     在数据库中,我们经常遇到需要处理图片的情况。例如,如 
 
 果我们在产品数据库中存储了产品的照片,那将给顾客以直接的 
 
 感官认识。 
 
     在数据库中,图片的特殊性有两点:1、图片所占存储空间常 
 
 常是比较大的;2、图片的处理常常需要外部的程序。 
 
     在标准SQL语言中,提供了BLOB和CLOB数据类型来存储巨大的 
 
 二进制或字符数据。Microsoft SQL Server中的text数据类型相 
 
 当于BLOB,而image数据类型相当于CLOB。 
 
     小型数据库我们常用ACCESS。在ACCESS中,备注数据类型可 
 
 以存储最多为 65,535 个字符,而OLE对象数据类型可以存储最多 
 
 1 G 字节的链接或嵌入的对象(例如 Microsoft Excel 电子表格 
 
 、Microsoft Word 文档、图形、声音或其他二进制数据)。 
 
     因为图片的大小常超出备注数据类型的限制,且用OLE类型更 
 
 方便,下面叙述一种在VB程序中处理ACCESS数据库中图片处理的 
 
 办法。 
 
     在该方法中,我们要利用ACCESS数据库中的OLE数据类型存储 
 
 图片,在VB程序中用OLE控件处理图片。 
 
     由于OLE对象不能支持ADO和OLEDB,我们要用DAO来连接数据 
 
 。 
 
     首先,在ACCESS数据库的表中,增加一个OLE对象数据类型的 
 
 列,用来存储图片。 
 
     其次,在VB程序中,添加一个Data控件,设置必要的属性, 
 
 建立数据库连接。当然,可以用代码实现,只是比较麻烦,有挑 
 
 战性,但更灵活。 
 
     在VB程序中添加一个OLE控件,出现插入对象对话框,选择新 
 
 建画笔图片或图像文档、位图图像等等反正能处理图像的OLE类型 
 
 。在此,我们选择新建画笔图片。 
 
     设置OLE控件的DataSource属性为Data控件,DataField属性 
 
 为数据库表的OLE类型列的名字。 
 
     就这么简单,我们可以试着运行它。 
 
     我们可以右键单击运行中的VB程序的OLE控件,出现编辑和打 
 
 开快捷菜单。选择编辑将会在窗口中嵌入画图程序的菜单;选择 
 
 打开将调用画图程序来打开图片。这样,我们就可以很方便地编 
 
 辑图片了。我们可以双击OLE控件,这样相当于选择编辑快捷菜单 
 
 。 
 
     以上方法我在VB6+ACCESS 2000中测试通过。其实,只要我们 
 
 理解Windows的OLE技术,以上方法是很容易理解的。 
 
     那么,如果在不支持OLE类型的大型数据库中,如Oracle、 
 
 Microsoft SQL Server中,如何来处理图片呢。 
 
     在大型数据库中,我们可以用BLOB或CLOB类型来存储图片。 
 
 因为图片数据是二进制的,用BLOB类型更好。 
 
     我们把图片文件的内容整个当作一个BLOB字段,读入数据库 
 
 中。 
 
     我们要在客户程序中处理图片时,将数据库中的BLOB字段读 
 
 出,写入到一个临时文件中,再调用外部程序打开该临时文件, 
 
 处理完后更新数据库,最后删除临时文件。 
 
     由于数据库不支持象Real Movie的流式传输,我想,一个临 
 
 时文件是免不了的。如果你能力强,可以寻求在内存中处理。 
 
     以上是我对数据库中的图片处理的一些看法,希望能对有需 
 
 要的网友有些帮助。 
 
      --
 
 作者:kingywq【】
 ※ 来源: 网易虚拟社区 广州站.
  
  
  | 
 
 
 |