在DataGridView To SQL表中保存N列

时间:2018-05-06 14:18:58

标签: vb.net

如何使用VB.net将数据网格视图中的N个列保存到Sql表

列未修复,用户可以在运行时添加列,用户应该能够将数据保存到表

我可以使用以下代码保存数据但我的问题是我需要保存而不提供单独的参数和列名称。用户可以在运行时向datagridview添加n个列,这些列应该保存用户点击保存按钮。

谢谢你

For Each row As DataGridViewRow In Even_Log_Grid.Rows
    Dim SQLconstring As String = "My connection"
    Using con As New SqlConnection(SQLconstring)
        Using SQLcmd As New SqlCommand("INSERT INTO EMP_Event_Log VALUES(@Token, @Name, @DeviceName, @PDate, @PTime)", con)
            SQLcmd.Parameters.AddWithValue("@Token", row.Cells("Token No").Value)
            SQLcmd.Parameters.AddWithValue("@Name", row.Cells("Name").Value)
            SQLcmd.Parameters.AddWithValue("@DeviceName", row.Cells("Device Name").Value)
            SQLcmd.Parameters.AddWithValue("@PDate", CDate(row.Cells("Punch Date").Value))
            SQLcmd.Parameters.AddWithValue("@PTime", (row.Cells("Punch Time").Value))
            con.Open()
            SQLcmd.ExecuteNonQuery()
         End Using
     End Using
 Next

2 个答案:

答案 0 :(得分:0)

我会用所有10个字段编写insert语句。然后检查列的存在并相应地添加参数值。

For Each row As DataGridViewRow In DataGridView1.Rows
            If DataGridView1.Columns.Contains("Token No") Then
                SQLcmd.Parameters.AddWithValue("@Token", row.Cells("Token No").Value)
            Else
                SQLcmd.Parameters.AddWithValue("@Token", DBNull.Value)
            End If
Next

答案 1 :(得分:0)

我想我找到了解决方案。这对我有用。任何方式都适合每一个人。发布需要的代码,如果有任何错误,可以随时更正代码。谢谢&的问候,

For Each ROW As DataGridViewRow In Me.Review_Grid.Rows
            For I = 0 To Me.Review_Grid.Columns.Count - 1
                Dim con As New SqlConnection("My Conection String")
                Dim COM As New SqlCommand(" My Insert Command)", con)
                COM.Parameters.AddWithValue("@Token", ROW.Cells("TOKEN").Value)
                COM.Parameters.AddWithValue("@Name", ROW.Cells("NAME").Value)
                      con.Open()

                COM.ExecuteNonQuery()
                con.Close()
            Next

        Next

        MessageBox.Show("Saved Successfully", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
        SQLSET.Clear()