VB.net - insert/retrieve picture from mysql Database directly to/from a Picturebox

后端 未结 5 1725
逝去的感伤
逝去的感伤 2020-12-21 08:50

I\'m am having a heck of a time finding a code snippet that works for this. I have got to the point where it appears the picture is stored as a blob (perhaps incorrectly) by

5条回答
  •  自闭症患者
    2020-12-21 09:14

    Well since getting no help i bashed away at the problem and got it to work finally. Here is my working code.

    SAVE TO MySQL out of Picturebox (pbPicture)

        Dim filename As String = txtName.Text + ".jpg"
        Dim FileSize As UInt32
    
        conn.Close()
    
        Dim mstream As New System.IO.MemoryStream()
        PbPicture.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
        Dim arrImage() As Byte = mstream.GetBuffer()
    
        FileSize = mstream.Length
        Dim sqlcmd As New MySqlCommand
        Dim sql As String
        mstream.Close()
    
        sql = "insert into [your table]  (picture, filename, filesize) 
                                   VALUES(@File, @FileName, @FileSize)"
    
        Try
            conn.Open()
            With sqlcmd
                .CommandText = sql
                .Connection = conn
                .Parameters.AddWithValue("@FileName", filename)
                .Parameters.AddWithValue("@FileSize", FileSize)
                .Parameters.AddWithValue("@File", arrImage)
    
                .ExecuteNonQuery()
            End With
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            conn.Close()
        End Try
    

    LOAD from MySQL db Back to Picturebox

       Dim adapter As New MySqlDataAdapter
        adapter.SelectCommand = Cmd
    
        data = New DataTable
    
        adapter = New MySqlDataAdapter("select picture from [yourtable]", conn)
    

    NOTE!! can only put once picture in picturebox so obvoiusly this query can only return one record for you

        commandbuild = New MySqlCommandBuilder(adapter)
        adapter.Fill(data)
    
        Dim lb() As Byte = data.Rows(0).Item("picture")
        Dim lstr As New System.IO.MemoryStream(lb)
        PbPicture.Image = Image.FromStream(lstr)
        PbPicture.SizeMode = PictureBoxSizeMode.StretchImage
        lstr.Close()
    

提交回复
热议问题