2017-04-25 68 views
-1

当我更新表单时,只有当我不更新(更改)图像时才会出现此错误。
当我用新图片更新时,我没有这个错误。GDI +在更新时发生了一般性错误

Try 
    Dim mstream As New System.IO.MemoryStream() 
    PictureBox1.Image = New Bitmap(Image.FromStream(mstream)) 
    Dim arrImage() As Byte = mstream.GetBuffer() 
    mstream.Close() 

    MysqlConn.Close() 
    MysqlConn.Open() 
    COMMAND.Connection = MysqlConn 
    COMMAND.CommandText = "update product set 
     [email protected], 
     [email protected] 
     where id = '" & TextBox1.Text & "'" 
    COMMAND.Parameters.AddWithValue("@Value1", If(String.IsNullOrEmpty(ComboBox1.Text), DBNull.Value, ComboBox1.Text)) 

    COMMAND.Parameters.AddWithValue("@foto", arrImage) 
    READER = COMMAND.ExecuteReader 
    MessageBox.Show("Datos Guardados") 
    MysqlConn.Close() 
Catch ex As Exception 
    MessageBox.Show(ex.Message) 
Finally 
    MysqlConn.Dispose() 
End Try 
MysqlConn.Close() 
+3

我不明白你的代码是如何工作的。在第一行中,您正在初始化一个未提供任何参数的新MemoryStream,然后立即尝试从中获取图像?也请确定导致异常的确切代码行,并请发布完整的异常详情。 – DeanOC

+0

你是什么意思'当我不更新(改变)图像'你的代码显示图像数据被传递,不管是什么。除了上面的代码外,还有很多错误:a)不使用'GetBuffer()',使用'ToArray' - 考虑不保存图像,而是保存到某个归档位置的文件的名称; b)不要使用'AddWithValue()'使用'Add(string,dbType).Value = ...'形式c)总是使用SQL参数,包括WHERE子句目标d)ExecuteNonQuery比DataReader更好 – Plutonix

+0

@DeanOC不幸的是有了这个错误,'一个通用的错误... * * *是细节。 – Plutonix

回答

-2

我试试这个和工作。

Dim mstream As New System.IO.MemoryStream() 
       'PictureBox1.Image = New Bitmap(Image.FromStream(mstream)) 
       PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg) 
       Dim arrImage() As Byte = mstream.GetBuffer() 
+1

不使用'GetBuffer()',使用'ToArray()'的缺点在MSDN上清楚地概述... [和这里](http://stackoverflow.com/a/31370711) – Plutonix

相关问题