我有一个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/