Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist der schnellste Weg, um Werte aus Datagridview in die MySQL-Datenbank einzufügen

Ich kann nicht sagen, wie viel schneller dies sein wird, aber es gibt einfache Optimierungen für Ihre Abfrage

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

Durch die Verwendung von Parametern können Sie den MySqlCommand nur einmal außerhalb der Schleife erstellen und vermeiden auch die Arbeit, die zum Verketten der Zeichenfolgen erforderlich ist. (Ganz zu schweigen von dem Problem der Sql-Injektion)

Beachten Sie, dass ich Ihrem Hinweis im SQL-Text gefolgt bin, in dem alle Ihre Felder vom Typ string (VarChar) zu sein scheinen. Wenn Ihre Felder einen anderen Datentyp haben, sollten Sie die MySqlDbType-Aufzählung auf Ihren richtigen Datentyp anpassen (und die Eingabewerte konvertieren=