C# 无法在vb.net windows窗体应用程序中从数据网格视图更新图像

C# 无法在vb.net windows窗体应用程序中从数据网格视图更新图像,c#,vb.net,winforms,datagridview,C#,Vb.net,Winforms,Datagridview,我在vb.net windows应用程序中有一个数据网格视图,我正在填充网格视图,如下所示: 我在load evant中编写的代码不是这样的 Dim cd As SqlCommandBuilder = New SqlCommandBuilder(adapter) adapter = New SqlDataAdapter("select c.cid,c.CompanyName,d.dtId,d.dtName as Department,d.dtPhone as Phone,d.d

我在vb.net windows应用程序中有一个数据网格视图,我正在填充网格视图,如下所示: 我在load evant中编写的代码不是这样的

 Dim cd As SqlCommandBuilder = New SqlCommandBuilder(adapter)
        adapter = New SqlDataAdapter("select c.cid,c.CompanyName,d.dtId,d.dtName as Department,d.dtPhone as Phone,d.dtEmail as Email,d.empimage from CompanyMaster_tbl c join  DepartmentMaster_tbl d on c.Cid=d.cId order by cid", con.connect)

        dt1 = New DataTable
        bSource = New BindingSource
        adapter.Fill(dt1) 'Filling dt with the information from the DB
        bSource.DataSource = dt1
        gv.DataSource = bSource
        gv.Columns("cid").Visible = False
        gv.Columns("dtId").Visible = False
        Dim img As New DataGridViewImageColumn
        img.HeaderText = "Image"
        gv.Columns.Insert(6, img)

        For i As Integer = 0 To gv.Rows.Count - 1
            gv.Rows(i).Cells(6).Value = gv.Rows(i).Cells(7).Value
        Next
        gv.Columns("empimage").Visible = False
在update button中,我编写了如下代码:

Dim cid As Integer
        Dim dtid As Integer
        Dim cmpname As String
        Dim dtname As String
        Dim dtPhone As String
        Dim dtEmail As String
        Dim dtimage As Image


        For i As Integer = 0 To gv.RowCount - 2
            ' Dim rv = DirectCast(bSource.Current, DataRowView)
            Dim rv = DirectCast(gv.Rows(i).DataBoundItem, DataRowView)
            cid = rv.Row.Field(Of Integer)("Cid")

            dtid = rv.Row.Field(Of Integer)("dtId")
            cmpname = rv.Row.Field(Of String)("CompanyName")
            dtname = rv.Row.Field(Of String)("Department")
            dtPhone = rv.Row.Field(Of String)("Phone")
            dtEmail = rv.Row.Field(Of String)("Email")

            Using ms As New MemoryStream(rv.Row.Field(Of Byte())("empimage"))
                dtimage = New Bitmap(ms)
            End Using

            adapter.UpdateCommand = New SqlCommand("UPDATE CompanyMaster_tbl SET CompanyName = @CompanyName", con.connect)
            adapter.UpdateCommand = New SqlCommand("update DepartmentMaster_tbl set dtName = @dtName,dtPhone = @dtPhone,dtEmail = @dtEmail,empimage=@dtimage  where dtId=@dtid", con.connect)
            adapter.UpdateCommand.Parameters.AddWithValue("@Cid", cid)
            adapter.UpdateCommand.Parameters.AddWithValue("@CompanyName", cmpname)
            adapter.UpdateCommand.Parameters.AddWithValue("@dtId", dtid)
            adapter.UpdateCommand.Parameters.AddWithValue("@dtName", dtname)
            adapter.UpdateCommand.Parameters.AddWithValue("@dtPhone", dtPhone)
            adapter.UpdateCommand.Parameters.AddWithValue("@dtEmail", dtEmail)
            adapter.UpdateCommand.Parameters.AddWithValue("@dtimage", dtimage)
            adapter.UpdateCommand.ExecuteNonQuery()
        Next
执行此操作时,我在这一行中遇到错误:adapter.UpdateCommand.ExecuteNonQuery() 错误:
不存在从对象类型System.Drawing.Bitmap到已知托管提供程序本机类型的映射

我的代码怎么了
任何帮助都是非常明显的???

r您将图像保存在数据库中或仅保存图像的路径?我正在将图像保存在数据库中。您是否尝试在二进制块转换回图像格式后立即将数据库中的图像显示在图片框中?我可以将图像从数据库显示到数据网格视图。这是我在更新中编写的代码按钮,如果我想编辑任何图像,我将进行编辑,然后单击更新按钮,此时我将收到此错误