How to add image from database to PictureBox?

后端 未结 5 760
半阙折子戏
半阙折子戏 2020-12-10 21:05

I am using this to get image bytes from the database

cmd.CommandText = \"select imagedate from projectimages where imagename = \'\" + _
    ListBox1.Text + \         


        
相关标签:
5条回答
  • 2020-12-10 21:45

    Use a MemoryStream object as per Microsoft.

    0 讨论(0)
  • 2020-12-10 21:51

    I was getting the parameter not valid error as well. To fix, I added a picturebox to my form that loads the image I'm copying to the SQL server as a background image. This statement seems to be key:

    PictureBox1.BackgroundImage.Save(ms, PictureBox1.BackgroundImage.RawFormat)
    

    It makes the actual upload take a lot longer, but I'm no longer getting the parameter error... I think because the pictures are actually valid images now.

            SSScmd.CommandText = "INSERT INTO PreviewSlideshow (Name, Photo) VALUES (@name, @photo)"
    
            Dim p As New SqlParameter("@photo", SqlDbType.Image)
    
            For Each CurFile As IO.FileInfo In New IO.DirectoryInfo(sSourcePath).GetFiles
    
                If CurFile.Name = "Thumbs.db" Then
                    'skip
                Else
    
                    If CurFile.Extension = "jpg" Or CurFile.Extension = "png" Then
    
                        'show the image name on the form
                        ImageName.Text = CurFile.Name
    
                        SSScmd.Parameters.AddWithValue("@name", ImageName.Text)
    
                        Dim ms As New MemoryStream()
    
                        PictureBox1.BackgroundImage = Image.FromFile(sSourcePath & CurFile.Name)
    
                        PictureBox1.BackgroundImageLayout = ImageLayout.Stretch
    
                        PictureBox1.BackgroundImage.Save(ms, PictureBox1.BackgroundImage.RawFormat)
    
                        Dim data As Byte() = ms.GetBuffer()
    
                        p.Value = data
    
                        SSScmd.Parameters.Add(p)
    
                        SSScmd.ExecuteNonQuery()
    
                        SSScmd.Parameters.Clear()
    
    
    
                    End If
                End If
    
            Next
    
    0 讨论(0)
  • 2020-12-10 21:53

    here's my code to show blob file to picturebox in vb.net. hope it helps

    Dim connstring As String = "Database=pmk;data source=localhost;user id=root;password="
    Dim Sql As String = "select * from mastermahasiswa where Nim='" & TextBox1.Text & "'"
    Dim conn As New MySqlConnection(connstring)
    Dim cmd As New MySqlCommand(Sql, conn)
    Dim dr As MySqlDataReader = Nothing
    conn.Open()
    dr = cmd.ExecuteReader()
    dr.Read()
    Dim imagebytes As Byte() = CType(dr("Foto"), Byte())
    Using ms As New IO.MemoryStream(imagebytes)
        PictureBox1.Image = Image.FromStream(ms)
        PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
    End Using
    conn.Close()
    
    0 讨论(0)
  • 2020-12-10 21:54

    After 5-6 hours of searching forums and blogs and everything i fond this... to save image to database

    1- datatype should be image in database

    Now add this code when storing image to the sql database

        OpenFileDialog1.ShowDialog()
        imageFilename = OpenFileDialog1.FileName
        Dim imageUpload As Image
        imageUpload = Image.FromFile(OpenFileDialog1.FileName)
    
    
    
        If imageFilename <> "" Then
    
            Dim imageNameTemp As String
    
            imageNameTemp = imageFilename
    
            While (imageNameTemp.Contains("\"))
    
    
                imageNameTemp = imageNameTemp.Remove(0, imageNameTemp.IndexOf("\") + 1)
            End While
    
            Dim ms As New IO.MemoryStream
    
            If imageFilename.Contains("jpeg") Or imageFilename.Contains("jpg") Then
                imageUpload.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
    
            End If
            If imageFilename.Contains("png") Then
                imageUpload.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
            End If
            If imageFilename.Contains("gif") Then
                imageUpload.Save(ms, System.Drawing.Imaging.ImageFormat.Gif)
            End If
            If imageFilename.Contains("bmp") Then
                imageUpload.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp)
            End If
    
            'Dim cmd As New SqlCommand("INSERT INTO projectimages (imagename,imagedate,csvprojectref) VALUES ('" + imageFilename + "',@BLOBData,CHECKSUM('" + textboxFileRef.Text + "'))", con)
    
            Dim b() As Byte = ms.ToArray()
    
            Dim cmd As New SqlCommand("INSERT INTO projectimages (imagename,imagedate,csvprojectref) VALUES ('" + imageNameTemp + "',@BLOBData,CHECKSUM('" + textboxFileRef.Text + "'))", con)
    
            cmd.Parameters.Add("@BLOBData", SqlDbType.Image, b.Length).Value = b
            '    Dim cmd As New SqlCommand("insert projectimages(imagename,imagedate,csvprojectref) values('imagma','" + img + "',CHECKSUM('" + textboxFileRef.Text + "'))", con)
    
            cmd.ExecuteNonQuery()
    
            '  cmdTemp.Parameters.Add("@photo", SqlDbType.Image, b.Length).Value = b
    
        End If
    

    And when to retrieve data to insert into picture box use this code...

      cmd.CommandText = "select imagedate from projectimages where imagename = '" +      ListBox1.Text + "' and CSVprojectref=checksum('" + textboxFileRef.Text + "')"
    
    
            cmd.Connection = con
            Dim da As New SqlDataAdapter(cmd)
            Dim ds As New DataSet()
            da.Fill(ds, "projectimages")
            Dim c As Integer = ds.Tables(0).Rows.Count
            If c > 0 Then
                Dim bytBLOBData() As Byte = _
                    ds.Tables(0).Rows(c - 1)("imagedate")
                Dim stmBLOBData As New MemoryStream(bytBLOBData)
                PictureBox1.Image = Image.FromStream(stmBLOBData)
            End If
    
    0 讨论(0)
  • 2020-12-10 22:04
    Dim img As Byte() = DirectCast(cmd.ExecuteScalar(), Byte())
    Dim ms as MemoryStream = New MemoryStream(img)
    pictureBox.Image = Image.FromStream(ms)
    

    assuming imagedate field a blob field.

    0 讨论(0)
提交回复
热议问题