Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để tạo truy vấn an toàn để thực hiện chèn hàng loạt trong MySQL bằng MySQLCommand trong C # mà không sử dụng proc được lưu trữ?

const string QUERY = "INSERT INTO contacts (first_name,last_name) VALUES" + 
                      BuildQuery(c, contacts);

public string BuildQuery(MySQLCommand c, IEnumerable<contact> contacts)
{
    List<string> values = new List<string>();
    string query = null;
    int i = 0;
    foreach (var contact in contacts)
    {
       i++;
       query += "(@firstName" + i + ", @lastName" + i + ")";
       c.Parameters.AddWithValue("@firstName" + i, contact.first_name);
       c.Parameters.AddWithValue("@lastName" + i, contact.last_name);

       if(i < contacts.Count) 
          query += ",";
    }

    return query
}

Bạn có thể thấy chuỗi có liên quan tại đây ! Tôi hẳn đã bỏ lỡ một vài điều tầm thường, nhưng điều đó thật tầm thường để bạn có thể sửa chữa. Tất nhiên bạn biết điều gì sẽ xảy ra khi contacts không có phần tử. Tôi không thấy nhiều trường hợp cạnh. Btw, hãy nhớ bạn có giới hạn về số lượng tham số như vậy bạn có thể thêm tùy thuộc vào kích thước gói tối đa cho phép của mysql. Bạn có thể thay đổi nó, hoặc cẩn thận để không vượt quá giới hạn đó. Chúc mừng! :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Còn gì nhanh hơn, CHỌN DISTINCT hoặc GROUP BY trong MySQL?

  2. Chèn cùng một giá trị cố định vào nhiều hàng

  3. Hibernate CriteriaBuilder để tham gia nhiều bảng

  4. Dấu thời gian với độ chính xác mili giây:Cách lưu chúng trong MySQL

  5. MySQL:NULL vs