Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quel est le moyen le plus rapide d'insérer des valeurs de datagridview dans la base de données mysql

Je ne peux pas dire à quel point cela sera plus rapide, mais il existe des optimisations simples à votre requête

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

L'utilisation de paramètres vous permet de construire MySqlCommand une seule fois en dehors de la boucle et évite également le travail nécessaire pour concaténer les chaînes. (Sans parler du problème d'injection Sql)

Notez que j'ai suivi votre indice dans le texte sql où tous vos champs semblent être de type string (VarChar). Si vos champs sont de types de données différents, vous devez ajuster l'énumération MySqlDbType à votre type de données correct (et convertir les valeurs d'entrée=