Sql 从Access数据Ole对象读取图像
我无法使用ole对象从access文件读取图像, 以上是我的编码,请帮我解决 错误消息:“System.Drawing.Image”类型的错误3值无法转换为“String”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
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