sql >> Databáze >  >> RDS >> Mysql

Jaký je nejrychlejší způsob vložení hodnot z datagridview do databáze mysql

Nedokážu říct, o kolik to bude rychlejší, ale váš dotaz má jednoduché optimalizace

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

Použití parametrů vám umožní sestavit MySqlCommand pouze jednou mimo smyčku a také se vyhnete práci potřebné ke zřetězení řetězců. (Nemluvě o problému Sql Injection)

Všimněte si, že jsem sledoval vaši nápovědu v textu SQL, kde se zdá, že všechna vaše pole jsou typu string (VarChar). Pokud jsou vaše pole jiného datového typu, měli byste upravit výčet MySqlDbType na váš správný datový typ (a převést vstupní hodnoty=



  1. Existuje schopnost ANY_VALUE pro mysql 5.6?

  2. Ignorování apostrofů při vyhledávání v mysql

  3. Jak zálohujete a obnovujete databázi jako kopii na stejném serveru?

  4. MYSQL se liší výstupem ze skriptu