使用vb.net从不使用picturebox从MySQL检索BLOB

时间:2013-06-17 05:35:09

标签: mysql vb.net

这可能看起来像一个微不足道的问题,但是我已经找到了一个不错的解释,并试图自己破译这个问题,几乎没有成功。我希望检索我存储在MySql数据库中的blob,将其渲染为图像,并将其显示为关联的ASPX页面中的图像。我没有使用图片框。如果有一个我没见过的资源,我会接受它作为答案并为重复的问题道歉。我无需建立连接的帮助。

编辑:这是我最近一直在使用的内容,除了将文件流发送到我无权写入文件的目录。错误发生在Image.FromStream(lstr)

    Dim Query As String = "Select PIC from USERS where ID = 1"

    Dim adapter As New MySql.Data.MySqlClient.MySqlDataAdapter

    adapter.SelectCommand = New MySql.Data.MySqlClient.MySqlCommand(Query, connection)

    Dim Data As New DataTable

    Dim commandbuild As New MySql.Data.MySqlClient.MySqlCommandBuilder(adapter)

    adapter.Fill(data)


    Dim lb() As Byte = Data.Rows(Data.Rows.Count - 1).Item("PIC")
    Dim lstr As New System.IO.MemoryStream(lb)
    Dim X As Image = Image.FromStream(lstr)
    lstr.Close()

    Return X

1 个答案:

答案 0 :(得分:1)

在这种情况下,http://msdn.microsoft.com/en-us/library/93z9ee4x.aspx表示您必须在图片的生命周期内保持流打开。

所以你必须删除lstr.Close()

你不再需要处理lstr之后就可以这样做了。

再次编辑:

更改了此

Dim lstr As New System.IO.MemoryStream(lb)
Dim X As Image = Image.FromStream(lstr)
lstr.Close()

Dim lstr As New System.IO.MemoryStream(lb)
Dim X As Image = Image.FromStream(lstr)
Dim X2 As Image = X
x.Dispose
lstr.Close()

然后您可以使用X2作为您的图像