Dim conn As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=test.mdb")
conn.Open()
Dim d As String = " select zhaopian from 表1 where name='1'"
Dim comm As New OleDbCommand(d, conn)
Dim reader As OleDbDataReader = comm.ExecuteReader
reader.Read()
Dim photofile() As Byte
photofile = reader.GetValue(0)
Dim streamph As New MemoryStream(photofile)
PictureBox1.Image = Image.FromStream(streamph)
conn.Close()
------解决方案--------------------
图片是2进制存入的
------解决方案--------------------
会不会是zhaopian类型问题,应该是OLE 对象吧,怎么显示是itmap image?
------解决方案--------------------
插入图片时就错了,好好看一下你的插入图片吧
------解决方案--------------------
刚刚用SQL server 2008r2+VS2008实验了一下,可以正常保存到数据库并取出来显示到窗体上。操作如下:
数据库方面,新建一个表tmp1,表里面两个字段:
ID nvarchar(50)
zhaopian image
程序方面:
新建一个窗体,拖拽两个按钮和两个PictureBox,给PictureBox1设置好图片,粘贴下面的代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ms As New System.IO.MemoryStream()
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
Using cnn As New SqlClient.SqlConnection(gsConsvr), cmm As New SqlClient.SqlCommand
cnn.Open()
cmm.Connection = cnn
cmm.CommandText = "INSERT INTO tmp1(ID,zhaopian)VALUES(@id,@zhaopian)"
cmm.Parameters.Add(New SqlClient.SqlParameter("@id", 1))
cmm.Parameters.Add(New SqlClient.SqlParameter("@zhaopian", SqlDbType.Image)).Value = ms.GetBuffer
cmm.ExecuteNonQuery()
End Using
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Using cnn As New SqlClient.SqlConnection(gsConsvr), cmm As New SqlClient.SqlCommand 'gsConsvr是连库字符串
cnn.Open()
cmm.Connection = cnn
cmm.CommandText = "SELECT zhaopian FROM tmp1 where id='1'"
Dim bytes() As Byte = cmm.ExecuteScalar
Dim ms As New System.IO.MemoryStream(bytes)
PictureBox2.Image = Image.FromStream(ms)
End Using
End Sub
执行以后,点击第一个按钮,保存到数据库里面,点击第二个按钮就可以读出来并显示到PictureBox2了。
代码很粗糙,凑合着看吧。