Tôi không thể biết điều này sẽ nhanh hơn bao nhiêu, tuy nhiên có những cách tối ưu hóa đơn giản cho truy vấn của bạn
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
Việc sử dụng các tham số cho phép bạn xây dựng MySqlCommand chỉ một lần bên ngoài vòng lặp và tránh công việc cần thiết để nối các chuỗi. (Không đề cập đến vấn đề của Sql Injection)
Lưu ý rằng tôi đã làm theo gợi ý của bạn trong văn bản sql nơi tất cả các trường của bạn dường như thuộc loại chuỗi (VarChar). Nếu các trường của bạn có kiểu dữ liệu khác nhau thì bạn nên điều chỉnh enum MySqlDbType thành kiểu dữ liệu chính xác của bạn (và chuyển đổi các giá trị đầu vào =