从SQL Server下载(小)图像的内存不足

时间:2014-01-30 21:06:35

标签: sql sql-server vb.net ado.net out-of-memory

感谢您的关注。

我正在测试我的一个小程序,它旨在从SQL Server上传和检索图像。

当我运行下面的代码时,我得到一个“Out of Memory”错误 - 虽然我的PC有8GB内存,而teh程序只是一个单一的形式。

Dim cmd As New SqlCommand("SELECT DP FROM PersonsA WHERE Members_ID = 1", con)
cmd.CommandType = CommandType.Text
Dim ImgStream As New IO.MemoryStream(CType(cmd.ExecuteScalar, Byte()))
PictureBox2.BackgroundImage = Image.FromStream(ImgStream)
ImgStream.Dispose()
con.Close()
  

System.Drawing.dll中出现未处理的“System.OutOfMemoryException”类型异常

     

其他信息:内存不足。

调试突出显示BackgroundImage =行,如果我将BackgroundImage更改为Image,则程序可以正常工作。但是我这样牺牲了布局选项。

为什么会发生此错误,并且只有在BackgroundImage

时才会发生错误

1 个答案:

答案 0 :(得分:0)

在阅读器上设置一个断点,然后当它击中该断点时按F10一次,然后检查并确保你有一些东西,它确实是二进制的(图像)......

Dim cmd as New SqlCommand("SELECT DP FROM PersonsA WHERE Members_ID = 1", con)
Dim reader as SqlDataReader = cmd.ExecuteReader()
Dim obj as Object, B() as Byte

If reader.HasRows Then
    While reader.Read()
        obj = reader.GetValue(0)
        Exit While
    End While
    If Not IsDBNull(obj) Then
        B = DirectCast(obj, Byte())
        Using ms as New IO.MemoryStream(B)
            PictureBox2.BackgroundImage = Image.FromStream(ms)
        End Using
    End If
End If