mysql - 将 datagridview 中的值插入到 mysql 数据库的最快方法是什么

标签 mysql vb.net datagridview sql-insert bulkinsert

我有一个vb.net系统,我想从datagridview插入10,000条或更多记录到mysql数据库。但当我尝试这个时,10,000 条记录需要 8 分钟

For i As Integer = 0 To DataGridView1.Rows.Count - 1

                        Dim queryInsert As String = "INSERT INTO tbl_shipdetails (ship_date, item_type, item_code, imei1, imei2)" & _
                                                    "VALUES('" & DataGridView1.Rows(i).Cells(1).Value & "','" & DataGridView1.Rows(i).Cells(2).Value & "','" & DataGridView1.Rows(i).Cells(3).Value & "','" & DataGridView1.Rows(i).Cells(4).Value & "','" & DataGridView1.Rows(i).Cells(5).Value & "')"
                        MySqlCmd = New MySqlCommand
                        MySqlCmd.Connection = Myconnect
                        MySqlCmd.CommandText = queryInsert
                        MySqlCmd.ExecuteNonQuery()
                    Next

我想知道是否有人知道最快的方法是什么?谁能帮帮我吗。我正在考虑将 datagridview 中的整个值插入到 mysql 中,只需一次插入(如批量)而不使用循环,但我不知道是否可能。

提前致谢!

最佳答案

我无法判断这会快多少,但是可以对您的查询进行简单的优化

Dim queryInsert As String = "INSERT INTO tbl_shipdetails (ship_date, " & _
                             "item_type, item_code, imei1, imei2)" & _
                             "VALUES(@p1,'@p2,@p3,@p4,@p5)"
Dim cmd = New  MySqlCommand(queryInsert, Myconnect)
cmd.Parameters.Add("@p1", MySqlDbType.VarChar)
cmd.Parameters.Add("@p2", MySqlDbType.VarChar)    
cmd.Parameters.Add("@p3", MySqlDbType.VarChar)    
cmd.Parameters.Add("@p4", MySqlDbType.VarChar)    
cmd.Parameters.Add("@p5", MySqlDbType.VarChar)
For i As Integer = 0 To DataGridView1.Rows.Count - 1
    cmd.Parameters("@p1").Value = DataGridView1.Rows(i).Cells(1).Value
    cmd.Parameters("@p2").Value = DataGridView1.Rows(i).Cells(2).Value 
    cmd.Parameters("@p3").Value = DataGridView1.Rows(i).Cells(3).Value
    cmd.Parameters("@p4").Value = DataGridView1.Rows(i).Cells(4).Value
    cmd.Parameters("@p5").Value = DataGridView1.Rows(i).Cells(5).Value
    cmd.ExecuteNonQuery()
Next

使用参数允许您在循环之外构建一次 MySqlCommand,并且还避免了连接字符串所需的工作。 (更不用说Sql注入(inject)的问题了)

请注意,我已按照您在 sql 文本中的提示进行操作,其中您的所有字段似乎都是 string(VarChar) 类型。如果您的字段具有不同的数据类型,那么您应该将 MySqlDbType 枚举调整为正确的数据类型(并转换输入值=

关于mysql - 将 datagridview 中的值插入到 mysql 数据库的最快方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34806397/

相关文章:

vb.net - datagridview 更新后重新填充组合框

c# - Datagridview cellcontent 单击事件无法正常工作

mysql - 轨道 3 : Measure database performance (MongoDB and MySQL)

mysql - 维护 MySQL 数据库中的修订历史记录

mysql - sql查询是否正确?

c# - 无法获取此查询的架构 Visual Studio 2015

c# - DataGridView 行颜色不改变

mysql - 选择多个图像 URL 并按行加载

vb.net - VB.Net 中的 CheckBoxFor Nullable Boolean

vb.net - .Net FormStartPosition.CenterScreen 不居中