sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es la forma más rápida de insertar valores de datagridview a la base de datos mysql?

No puedo decir cuánto más rápido será esto, sin embargo, hay optimizaciones simples para su consulta

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

El uso de parámetros le permite compilar MySqlCommand solo una vez fuera del ciclo y evita también el trabajo necesario para concatenar las cadenas. (Sin mencionar el problema de la inyección Sql)

Tenga en cuenta que he seguido su sugerencia en el texto sql donde todos sus campos parecen ser de tipo cadena (VarChar). Si sus campos tienen un tipo de datos diferente, debe ajustar la enumeración MySqlDbType a su tipo de datos correcto (y convertir los valores de entrada =