【问题标题】:How to add all records to database from a datagridview如何从datagridview将所有记录添加到数据库
【发布时间】:2019-02-01 19:30:46
【问题描述】:

我正在将 datagridview 中存在的记录添加到我的数据库中,但只添加了第一条记录的数据 - 多次。

如果存在五行,则第一行的数据将被添加到数据库中 5 次。

Dim a As String
    Dim b As String
    Dim c As String
    Dim d As String
    For Each dr As DataGridViewRow In Me.DataGridView1.Rows
        If Not dr.IsNewRow Then
            a = dr.Cells(0).Value.ToString
            b = dr.Cells(1).Value.ToString
            c = dr.Cells(2).Value.ToString
            d = dr.Cells(3).Value.ToString
            connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\sample.accdb"
            connection.Open()
            sql = "INSERT INTO  sampleone(`id`, `first_name`, `last_name`, `age`) VALUES (@ID, @FN, @LN, @AGE)"
            cmd.CommandText = sql
            cmd.Connection = connection
            cmd.Parameters.Add("@ID", OleDbType.Integer).Value = a
            cmd.Parameters.Add("@FN", OleDbType.LongVarChar).Value = b
            cmd.Parameters.Add("@LN", OleDbType.VarChar).Value = c
            cmd.Parameters.Add("@AGE", OleDbType.Integer).Value = d

            cmd.ExecuteNonQuery()
            connection.Close()

        End If

【问题讨论】:

  • 请先显示您的代码,以便我们更好地为您提供帮助。没有任何代码,我们无法看到您可能出错的地方。
  • 没有看到你的代码,听起来你有一个未绑定的DataGridView。我的建议是将 DataGridView 绑定到绑定到您的 DataSource 的 BindingSource。

标签: vb.net bulkinsert


【解决方案1】:

尝试以下方法:

For i = 0 to datagridview.rowCount - 1
    QueryExecute($"INSERT INTO `YourTable` VALUES ('{datagridview.Item(0, i).Value}', '{datagridview.Item(1, i).Value}')", DatabaseConnection)
Next

由于我不知道您是如何访问数据库的,请将上面的查询输入到您的代码中。

我还假设您的 datagridview 有 2 列。如果还有更多,可以外推里面的代码。

希望我的回答能解决你的问题

【讨论】:

  • 任何关于 sql 查询的答案都应该包括使用参数来避免 sql 注入和格式错误。
  • 您可以尝试将您在上面代码中尝试使用的参数集成到我的代码中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
相关资源
最近更新 更多