VB多类图片数据库存取技巧

VB多类图片数据库存取技巧

1、在窗体上建立IMAGE控件,名为IMAGE1

2、用DATA控件得到数据源表。

3、建立“更改图片”按钮COMMAND1,其代码:

Private SubCommand1_Click()
CommonDialog1.FileName = ""
CommonDialog1.Filter = "文件bmp*.bmp 文件JPG*.JPG 文件GIF*.GIF"
CommonDialog1.ShowOpen
Dim a As String
a = CommonDialog1.FileTitle 注释:得到不含路径文件名
If a <> "" Then
Image11.Picture = LoadPicture(App.Path & "\bmp\"& a)
注释:\bmp\是我用于存取图片的本系统文件夹下的一个子文件夹。
Data1.Recordset.Edit
Data1.Recordset.Fields("tp") = a 注释:TP是存取图片名称的字段。
Data1.Recordset.Update
End If
End Sub


如果只是表情图片,没必要写入数据库。存到服务器硬盘上就行了。
如果非要存入数据库,可以转换成二进制字节流再写入数据库。

发贴时图片是如何显示的,直接看一下页面的源文件就知道了。

 

你把它们的名字和路径存到数据库中!再从数据库中读取它的路径和名不可以吗?

 

已用Access建立好数据库,存放图片的字段采用"OLE对象",现在的问题是如何在程序中将图片存入该字段。

 

 

'将图片存入数据库  
          '首先将文件读入一字节数组  
  '         Dim   bit()   As   Byte 
  '         Open   "C:\WINDOWS\安装程序.bmp"  For   Binary   As   #1  
  '         ReDim   bit(LOF(1))   As  Byte  
  '         Get   1,   1,   bit  
  '         Close   1  
           
          '然后将字节数组的内容写入数据库即可  

          Dim  cnn   As   New   ADODB.Connection,   rst   As  New   ADODB.Recordset  

          cnn.Open  "Provider=SQLOLEDB.1;Password=test;Persist   Security  Info=True;User   ID=test;Initial   Catalog=pubs;Data  Source=DB1\SQL1"  

          rst.Open  "T1",   cnn,   adOpenKeyset,   adLockOptimistic 

      rst.AddNew  

        rst("F1").AppendChunk   bit  

        rst.Update  
  
          '将数据库中的图片读出  
          '首先将数据库中的内容读到一字节数组  
          Dim   bit1()   As   Byte 
          bit1   =  rst("F1").GetChunk(rst("F1").ActualSize)  
          '然后将字节数组的内容拼装成文件即可  
          Open   "c:\1.bmp"   For  Binary   As   #1  
          Put   1,   1,   bit1  
          Close   1  
  '         Me.Picture   =  LoadPicture("c:\1.bmp")  

 

将图片直接存入Access数据库适用于图片较少的情况,因为Access数据库文件不能超过100M,当图片较多时,宜采用只将图片路径存入数据库的方法。


其实有一个好方法:在数据库中存取图片的路径。存取图片不也是在硬盘上么?。。。 
  取出路径再根据路径找图片。。。

 

在Access中BMP图像存成OLE对象,请问如何将其打开成(StdPicture

 

在窗体上建一个IMAGE和DATA控件,将DATA控件的DATABASENAME属性设为数据库名,RECORDSOURE属性设为表名。将IMAGE控件的DATASOURE设为DATA,RECORDSOURE设为  
  STDPICTURE。

 

 

VB程序中数据库的图片处理的解决方法

 

小型数据库我们常用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的流式传输,我想,一个临  

时文件是免不了的。如果你能力强,可以寻求在内存中处理。  

    以上是我对数据库中的图片处理的一些看法,希望能对有需  

要的网友有些帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值