Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 向datagridview显示图像时出现问题_Vb.net_Image_Datagridview - Fatal编程技术网

Vb.net 向datagridview显示图像时出现问题

Vb.net 向datagridview显示图像时出现问题,vb.net,image,datagridview,Vb.net,Image,Datagridview,我在查看或显示从数据库(mysql)到datagriview的图像时遇到问题 我试图检索的数据库中的表名为sample,其中包含ID=Int(10)、primary、auto increment和IMG=blob字段 有人能帮我吗?非常感谢 Sub getData() Try Dim Sql = "Select ID, IMG from sample" connectionOn() Dim cmd = New

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

我试图检索的数据库中的表名为sample,其中包含ID=Int(10)、primary、auto increment和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
下面是我在数据库中保存图像的代码。但这并不能拯救任何东西。我想从datagrid中获取图像,然后将其保存到数据库中

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
由于用于存储
SqlServer映像类型
,我认为您可以使用
MySql
类(即:
MySqlDataAdapter
而不是
SqlDataAdapter
)调整此代码:


首先,您不应该在数据库中存储图像。您可以将它们存储在服务器上,然后使用映像位置(在数据库中存储映像位置)引用它。你也可以展示你的aspx吗?@AmneshGoel我一直在使用longblob在数据库中保存和检索图像。我在你之前的话中没有看到任何引用,所以我把它保存在了数据库中。我没有任何问题,但现在我需要同步我的数据库,我遇到了这样的问题:(@AmneshGoel,因为你说的很容易丢失数据,我没有这样做。你能从你的aspx中显示你的数据网格代码吗?@AmneshGoel实际上,我需要做的是同步我的第一个和第二个数据库。我的表单中只有一个按钮和一个数据网格。上面的代码是我从第一个数据库获取数据并将其显示给da的代码tagridview.hi。非常感谢。我现在可以在datagrid中查看图像了。但是你知道如何将其保存到另一个数据库吗?我无法在数据库中保存任何内容:(我将在我的问题中输入我当前正在做的事的代码如果
DataGridView1
在两个代码段中是相同的,那么你有一个
字节()
而不是
DataGridView1.行(i).单元格(1).值中的
字符串。
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