把图片存入ACCESS数据库ZT发贴时间:2002/06/22 10:49am

: DeD(似水年华) ( ) 信誉:100 2001-4-23 16:03:00 得分:20 


 '下面的例子使用的ADO
'保存
Private Sub cmdSave_Click()
  
  Dim rs As New ADODB.Recordset
  Dim InterID As String
  Dim strData As String
  Dim fileNo As Integer
  Dim LenF As Long
  Dim BMPData() As Byte
  Dim mFileName As String
  '先保存图片
  mFileName = "c:\tt.bmp"
  SavePicture Picture1.Image, mFileName
  fileNo = FreeFile()
  '打开文件取出图形数据
  Open mFileName For Binary As #fileNo
  LenF = LOF(fileNo)
  ReDim BMPData(LenF)
  Get #fileNo, , BMPData
  Close #fileNo
  '保存到数据库中
  With rs
    .ActiveConnection = sConnection
    .LockType = adLockOptimistic
    .Open "select * from test "
    .AddNew
    '字段FID为一个 int 型的主键
    '字段FData为一个image 型的字段
    .Fields("FID") = InterID
    .Fields("FData").AppendChunk BMPData
    .Update
  End With
  rs.Close
  Set rs = Nothing
  
  
End Sub
'得到
Private Sub cmdLoad_Click()


  On Error GoTo H_Error
  Dim rsData As New ADODB.Recordset
  Dim strData As String, strBuffer As String
  Dim LenF As Long
  Dim BMPData() As Byte
  '打开数据库
  With rsData
    .ActiveConnection = sConnection
    .CursorLocation = adUseClient
    .Open "select * from test"
    '得到数据的长度
    LenF = .Fields("FData").ActualSize
    ReDim BMPData(LenF)
    '得到图形文件的数据
    BMPData = .Fields("FData").GetChunk(LenF)
  End With
  rsData.Close
  Set rsData = Nothing
  strBuffer = "c:\test.bmp"
  If Dir(strBuffer) <> "" Then
    Kill strBuffer
  End If
  Dim fileNo As Integer
  fileNo = FreeFile()
  Open strBuffer For Binary As #fileNo
  Put #fileNo, , BMPData
  Close #fileNo
  Picture1.Picture = LoadPicture(strBuffer)
  Exit Sub
H_Error:
  Debug.Assert False
End Sub

posted on 2005-01-19 09:47  James Wong   阅读(575)  评论(0编辑  收藏  举报