0

我为提示输入 .jpeg 文件的过程编写了代码,将该文件转换为 Byte 数组,并使用 Append chunk 方法将 Byte Array 保存到表中。另一个过程使用 GetChunk 方法从表中检索图片图像,将数据转换为文件并在图片框中显示该文件。

现在,我的问题是如何将图片框中显示的图像保存到数据库中,以便我可以执行以下操作:添加/更新等。我做了这样的事情:

Private Sub CmdSave_Click()
  if(cmbRNO=" ") then
    sql = "INSERT INTO STUDENT_RECORD_DATABASE(ROLLNO,PICS)"
    sql = sql + "VALUES(" & RNo & ","& picture1.picture &")"
    Set RES = CON.Execute(sql)
  Else
    sql = "UPDATE STUDENT_RECORD_DATABASE SET "
    sql = sql + "ROLLNO= " & Val(CmbRNO) & ","
    sql = sql + "PICS=" & Picture1.Picture & "  "
    sql = sql + "WHERE ROLLNO= " & Val(CmbRNO) & ""

    Set RES = CON.Execute(sql)
  End If
End Sub
<code for appendchunk method>    
Public Sub Command1_Click()
  Dim PictBmp As String
  Dim ByteData() As Byte   'Byte array for Blob data.
  Dim SourceFile As Integer
  ' Open the BlobTable table.
  strSQL = "Select ID, DOC from LOB_TABLE WHERE ID = 1"
  Set Rs = New ADODB.Recordset
  Rs.CursorType = adOpenKeyset
  Rs.LockType = adLockOptimistic
  Rs.Open strSQL, Cn
  ' Retrieve the picture and update the record.
  CommonDialog1.Filter = "(*.jpeg)|*.jpeg"
  CommonDialog1.ShowOpen
  PictBmp = CommonDialog1.FileName
  ' Save Picture image to the table column.
  SourceFile = FreeFile
  Open PictBmp For Binary Access Read As SourceFile
  FileLength = LOF(SourceFile)  ' Get the length of the file.
  If FileLength = 0 Then
      Close SourceFile
      MsgBox PictBmp & " empty or not found."
      Exit Sub
  Else
      Numblocks = FileLength / BlockSize
     LeftOver = FileLength Mod BlockSize
      ReDim ByteData(LeftOver)
      Get SourceFile, , ByteData()
      Rs(1).AppendChunk ByteData()
      ReDim ByteData(BlockSize)
      For i = 1 To Numblocks
          Get SourceFile, , ByteData()
          Rs(1).AppendChunk ByteData()
      Next i
      Rs.Update   'Commit the new data.
     Close SourceFile
  End If
  End Sub

尝试将图像保存到特定记录时,发生运行时错误:不一致的数据类型,预期的 BLOB 得到编号 Where as: ?sql UPDATE STUDENT_RECORD_DATABASE SET ROLLNO= 132,PICS=688195876 WHERE ROLLNO= 132

4

0 回答 0