繁体   English   中英

显示图像到datagridview时出现问题

[英]Trouble in displaying an image to datagridview

我在查看或显示从数据库(mysql)到datagriview的图像时遇到问题

我尝试检索的数据库中的表被命名为示例 ,其字段ID = Int(10),primary,自动递增且IMG = blob

有人可以帮助我吗? 将不胜感激

Sub getData()
        Try
            Dim Sql = "Select ID, IMG from sample"
            connectionOn()
            Dim cmd = New MySqlCommand(Sql, ConOn)
            Dim dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
            DataGridView1.Rows.Clear()
            While dr.Read = True
                Dim mybytearray As Byte() = dr.Item("IMG")  
                Dim myimage As Image
                Dim ms As System.IO.MemoryStream = New System.IO.MemoryStream(mybytearray)
                myimage = System.Drawing.Image.FromStream(ms)
                DataGridView1.Rows.Add(dr(0), myimage)
            End While
            ConOn.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

下面是我的代码将图像保存在数据库中。 但这并不能节省任何东西。 我想从数据网格中获取图像,然后将其保存到数据库中

Try
            connectionSync()
            Dim a, b As String
            Dim Sql = "INSERT INTO SAMPLE (ID, IMG)values(@a,@b)"

            For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1
                a = Me.DataGridView1.Rows(i).Cells(0).Value.ToString()
                Dim cmd As New MySqlCommand(Sql, ConSync)


                Dim memorystream1 As New MemoryStream()
                Dim filename As String = DataGridView1.Rows(i).Cells(1).Value
                Dim bitmaps As New Bitmap(filename)
                bitmaps.Save(memorystream1, Imaging.ImageFormat.Jpeg)
                Dim pic() As Byte = memorystream1.GetBuffer()

                cmd.Parameters.AddWithValue("@a", a)
                cmd.Parameters.AddWithValue("@b", bitmaps)
                cmd.ExecuteNonQuery()
                cmd.Parameters.Clear()
            Next
            ConSync.Close()
        Catch ex As Exception
               MsgBox(ex.Message)
        End Try

由于MySql BLOB类型用于存储SqlServer IMAGE Type我认为您可以使用MySql类(即: MySqlDataAdapter而不是SqlDataAdapter )来修改此代码:

Try

    Me.DataGridView1.DataSource = Nothing

    Dim dgvID As New DataGridViewTextBoxColumn
    dgvID.DataPropertyName = "ID"

    Dim dgvIMG As New DataGridViewImageColumn
    dgvIMG.DataPropertyName = "IMG"

    Me.DataGridView1.Columns.Add(dgvID)
    Me.DataGridView1.Columns.Add(dgvIMG)

    connectionOn()

    Dim cmdSample As SqlCommand = ConOn.CreateCommand
    cmdSample.CommandText = "SELECT ID, " _
        & "IMG " _
        & "FROM Sample"

    Dim dtSample As New DataTable
    Dim daSample As New SqlDataAdapter(cmdSample)
    daSample.Fill(dtSample)

    Me.DataGridView1.DataSource = dtSample

    ConOn.Close()
    ConOn.Dispose()

Catch ex As Exception
    MsgBox(ex.Message)
End Try

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM