利用编写代码实现图片的存储与显示
这种方法相对于方法一来说,代码量大,但是它操作灵活,能够满足多样形式下的操作,受到更多编程者的青睐。但是涉及到的知识面相对要多一些,不仅要掌握数据库的操作方法,还要二进制文件的读写作进一步的了解。关于数据库及二进制文件的基本操作很多参考书上都介绍的比较详细,需要时请查阅即可。在编程之前把本部分用到的变量说明如下:
Dim RS As New ADODB.Recordset Dim Chunk() As Byte Const ChunkSize As Integer = 2384 Dim DataFile As Integer, Chunks, Fragment As Integer Dim MediaTemp As String Dim lngOffset, lngTotalSize As Long Dim i As Integer |
1、从数据库中显示所需要的图片
第一步首先打开数据库,看有没有要查找的内容,有则继续执行,没有就退出
RS.Source = "select * from Info Where Name='" & sparaName &"';" RS.ActiveConnection = "UID=;PWD=;DSN=TestDB;" RS.Open If RS.EOF Then RS.cCose : Exit Sub |
第二步,读出长二进制数据即图片数据,把它转换成图片文件,操作过程如下
MediaTemp = strPath & "picturetemp.tmp" DataFile = 1 Open MediaTemp For Binary Access Write As DataFile lngTotalSize = RS!MyPhoto.ActualSize Chunks = lngTotalSize / ChunkSize Fragment = lngTotalSize Mod ChunkSize ReDim Chunk(Fragment) Chunk() = RS!MyPhoto.GetChunk(Fragment) Put DataFile, , Chunk() For i = 1 To Chunks ReDim Chunk(ChunkSize) Chunk() = RS!MyPhoto.GetChunk(ChunkSize) Put DataFile, , Chunk() Next i Close DataFile |
第三步,关闭数据库,这样就可以显示所要的图片了。
RS.Close If MediaTemp = "" Then Exit Sub Picture1.Picture = LoadPicture(MediaTemp) If Picture1.Picture = 0 Then Exit Subj |
2、向数据库中添加需要存储的图片
向数据库添加存储的图片是显示图片逆过程,只要掌握了显示图片的操作,存储图片的操作也就迎刃而解了,下面将操作步骤介绍如下
第一步首先打开数据库,过程如下:
RS.Source = "select * from Info ;" RS.CursorType = adOpenKeyset RS.LockType = adLockOptimistic RS.ActiveConnection = "UID=;PWD=;DSN=TestDB;" RS.Open |
第二步,把要存储的图片转换成二进制长文件存入数据库中,操作过程如下
RS.AddNew DataFile = 1 Open strPathPicture For Binary Access Read As DataFile FileLen = LOF(DataFile) ' 文件中数据长度 If FileLen = 0 Then : Close DataFile : RS.Close : Exit Sub Chunks = FileLen / ChunkSize Fragment = FileLen Mod ChunkSize ReDim Chunk(Fragment) Get DataFile, , Chunk() RS!MyPhoto.AppendChunk Chunk() ReDim Chunk(ChunkSize) For i = 1 To Chunks Get DataFile, , Chunk() RS!MyPhoto.AppendChunk Chunk() Next i Close DataFile |
第三步,更新纪录后,关闭数据库,就完成了数据图片到数据库的存储。
RS.Update RS.Close Set RS = Nothing |