如何以BLOB格式保存图片?

时间:2013-01-28 10:01:57

标签: oracle vb6

我为提示输入.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得到的数字 在哪里:     ?SQL     UPDATE STUDENT_RECORD_DATABASE SET ROLLNO = 132,PICS = 688195876 WHERE ROLLNO = 132

0 个答案:

没有答案