' gdi +一般错误'当我尝试更新一个寄存器时

时间:2016-08-16 16:39:21

标签: vb.net

要将图像从我的表单保存到我的数据库,我在函数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字段中的数据与我发送的数据相同保存(更新)。 我该如何解决这个问题?

1 个答案:

答案 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)

我认为两种方式都是一样的,但只适用于第二种方法。