2

このコードの問題は何ですか?? GDI+ でエラーが発生しましたが、解決方法がわかりません。

Private Sub saveEmployee()
   Dim ms As New MemoryStream

   PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)--i got error in this line..A generic error occurred in GDI+.

   Dim arrPic() As Byte = ms.GetBuffer()

   Dim cmdEmp As New MySqlCommand
   Dim sqlEmp As String
   sqlEmp = "update tbl_employee set  emPic=@emPic where emID='" & lbl_empID.Text & "'"

   With cmdEmp
      .Parameters.AddWithValue("@emPic", arrPic)
      .ExecuteNonQuery()
   End With
End Sub
4

2 に答える 2

1

その行をこれに置き換えてみてください:

Dim bm as Bitmap = new Bitmap(PictureBox1.Image)
bm.Save(ms, PictureBox1.Image.RawFormat)

その理由は、イメージが によって使用されている可能性がありPictureBoxます。代わりに次のものを使用することもお勧めします。

Using ms As MemoryStream = New MemoryStream()

   Dim bm as Bitmap = new Bitmap(PictureBox1.Image)
   bm.Save(ms, PictureBox1.Image.RawFormat)

   Dim arrPic() As Byte = ms.GetBuffer()

   Dim cmdEmp As New MySqlCommand
   Dim sqlEmp As String
   sqlEmp = "update tbl_employee set  emPic=@emPic where emID=@emID"

   With cmdEmp
     .Parameters.AddWithValue("@emPic", arrPic)
     .Parameters.AddWithValue("@emID", int.Parse(lbl_empID.Text))
     .ExecuteNonQuery()
   End With

End Using

このようにして、使用後にMemoryStream取得Disposedされます。また、パラメータとして追加@emIDする方が安全です。

于 2013-02-24T14:34:31.380 に答える