当前位置: 代码迷 >> VB Dotnet >> 这段代码为啥参数无效?非常短,来看看,come
  详细解决方案

这段代码为啥参数无效?非常短,来看看,come

热度:97   发布时间:2016-04-25 02:16:18.0
这段代码为什么参数无效?非常短,来看看,come
本帖最后由 yang1010363827 于 2014-07-06 00:34:37 编辑
        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?
------解决方案--------------------
引用:
Quote: 引用:

会不会是zhaopian类型问题,应该是OLE 对象吧,怎么显示是itmap image?

ole对象没错,我在里面插入image图,显示的就都是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了。
代码很粗糙,凑合着看吧。
  相关解决方案