Sql 从Access数据Ole对象读取图像

Sql 从Access数据Ole对象读取图像,sql,vb.net,Sql,Vb.net,我无法使用ole对象从access文件读取图像, 以上是我的编码,请帮我解决 错误消息:“System.Drawing.Image”类型的错误3值无法转换为“String” For i As Integer = 1 To Row pic(i) = New PictureBox strSQL = "SELECT * FROM packageDetail WHERE packageDetailID = ?" objcmd = New OleDbCommand(strSQL

我无法使用ole对象从access文件读取图像, 以上是我的编码,请帮我解决

错误消息:“System.Drawing.Image”类型的错误3值无法转换为“String”

For i As Integer = 1 To Row

    pic(i) = New PictureBox

    strSQL = "SELECT * FROM packageDetail WHERE packageDetailID = ?"
    objcmd = New OleDbCommand(strSQL, dbconn)

    objcmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("@packageID", i))

    reader = objcmd.ExecuteReader()

    reader.Read()

    Dim bytes() As Byte = CType(reader(11), Byte())
    Dim img As Image = Image.FromStream(New System.IO.MemoryStream(bytes))

    With pic(i)
        .Name = "pic(" & i.ToString & ")"
        .Image = Image.FromFile(img)

        .Visible = True
        .Left = 15
        .Width = 201
        .Height = 142
        .Top = 9
    End With
Next

在这里,您可以从读取的字节创建一个图像:

Dim img As Image = Image.FromStream(New System.IO.MemoryStream(bytes))
在这里,您试图将该图像用作文件名:

.Image = Image.FromFile(img)
ImageFromFile
需要文件名(字符串),您正在传递图像。这应该起作用:

.Image = img
您应该处理memstream:

Dim imgData As Byte()
imgData = TryCast(rdr.Item("Image"), Byte())
If imgData IsNot Nothing Then
     Using ms As New MemoryStream(imgData )
        img = CType(Image.FromStream(ms), Bitmap)
    End Using
End If

在这里,您可以从读取的字节创建一个图像:

Dim img As Image = Image.FromStream(New System.IO.MemoryStream(bytes))
在这里,您试图将该图像用作文件名:

.Image = Image.FromFile(img)
ImageFromFile
需要文件名(字符串),您正在传递图像。这应该起作用:

.Image = img
您应该处理memstream:

Dim imgData As Byte()
imgData = TryCast(rdr.Item("Image"), Byte())
If imgData IsNot Nothing Then
     Using ms As New MemoryStream(imgData )
        img = CType(Image.FromStream(ms), Bitmap)
    End Using
End If