要将图像从我的表单保存到我的数据库,我在函数SaveData
If Not IsNothing(_Image) Then
Dim _MemStream As New MemoryStream()
_Image.Save(_MemStream, System.Drawing.Imaging.ImageFormat.Jpeg)
.Parameters.AddWithValue("@image", _MemStream.ToArray()).SqlDbType = SqlDbType.Image
Else
.Parameters.AddWithValue("@image", Nothing)
End If
第一次保存信息时工作正常,但是当我尝试更新寄存器中的另一个字段时,会给出错误gdi+ generic error
和输出System.Runtime.InteropServices.ExternalException
我使用相同的函数进行保存并更新信息。
收到此问题我发现这个page并在条件说明中说The image was saved with the wrong image format or the image was saved to the same file it was created from.
所以我认为问题出现是因为Image字段中的数据与我发送的数据相同保存(更新)。 我该如何解决这个问题?
答案 0 :(得分:0)
好的,我找到了解决方案,当我尝试编辑我使用的信息时:
Using ms As New IO.MemoryStream(DirectCast(DataGridView.SelectedCells.Item(10).Value, Byte()))
PictureBox.Image = Image.FromStream(ms)
End Using
但这不允许我编辑寄存器,所以我尝试了这个:
Dim b() As Byte = DataGridView.SelectedCells.Item(10).Value
Dim ms As New IO.MemoryStream(b)
PictureBox.Image = Image.FromStream(ms)
我认为两种方式都是一样的,但只适用于第二种方法。