Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è il modo più veloce per inserire valori da datagridview al database mysql

Non posso dire quanto sarà più veloce, tuttavia ci sono semplici ottimizzazioni per la tua query

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'utilizzo dei parametri permette di costruire il MySqlCommand una sola volta fuori dal ciclo ed evita anche il lavoro necessario per concatenare le stringhe. (Per non parlare del problema di Sql Injection)

Nota che ho seguito il tuo suggerimento nel testo sql in cui tutti i tuoi campi sembrano essere di tipo string (VarChar). Se i tuoi campi hanno un tipo di dati diverso, dovresti regolare l'enumerazione MySqlDbType sul tipo di dati corretto (e convertire i valori di input=