Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual é a maneira mais rápida de inserir valores do datagridview para o banco de dados mysql


Não posso dizer o quanto isso será mais rápido, no entanto, existem otimizações simples para sua 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

O uso de parâmetros permite que você construa o MySqlCommand apenas uma vez fora do loop e também evita o trabalho necessário para concatenar as strings. (Sem mencionar o problema de Sql Injection)

Observe que segui sua dica no texto sql, onde todos os seus campos parecem ser do tipo string (VarChar). Se seus campos forem de tipo de dados diferente, você deve ajustar a enumeração MySqlDbType para o tipo de dados correto (e converter os valores de entrada =