3.图片数据的读取及显示
Public Sub ShowImage(Image1 As Image, rstu As Recordset)
Erase byteChunk()
fieldsize = rstu.Fields("sphoto").ActualSize
If fieldsize <= 0 Then
Image1.Picture = LoadPicture("")
Exit Sub
End If
'提供一个尚未使用的文件号
SourceFile = FreeFile
'打开文件
Open TempFile For Binary Access Write As SourceFile
'计算数据块
NumBlocks = fieldsize \ BlockSize
LeftOver = fieldsize Mod BlockSize '得到剩余字节数
'分块读取图像数据,并写入到文件中
If LeftOver <> 0 Then
ReDim byteChunk(LeftOver)
byteChunk() = rstu.Fields("sphoto").GetChunk(LeftOver)
Put SourceFile, , byteChunk()
End If
For i = 1 To NumBlocks
ReDim byteChunk(BlockSize)
byteChunk() = rstu.Fields("sphoto").GetChunk(BlockSize)
Put SourceFile, , byteChunk()
Next i
Close SourceFile
Image1.Picture = LoadPicture(TempFile) '将文件装入到Image1控件中
Kill (TempFile) '删除临时文件
End Sub
4.数据库中图片数据的删除
Private Sub Label2_Click() ‘单击标签2实现数据库中图片的删除
rs.Fields("sphoto").AppendChunk ""
rs.Update
Image3.Picture = LoadPicture("")
End Sub
四、结语
以上程序在Windows XP+VB中运行通过。数据库中BLOB数据的处理方法很多,不同的程序设计语言针对不同的DBMS,其处理方法都有差异。限于篇幅所限,在这里就不详述了。图片的出现为Visual Basic程序增添了美丽的情调,使程序更富魅力、更具专业。
|