Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak utworzyć bezpieczną kwerendę do wykonywania zbiorczego wstawiania w MySQL przy użyciu MySQLCommand w C# bez użycia przechowywanej procedury?

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
}

Możesz zobaczyć odpowiedni wątek tutaj !. Musiałem przegapić coś trywialnego, ale to trywialne dla ciebie do naprawienia. Oczywiście wiesz, co się dzieje, gdy contacts nie ma elementów. Nie widzę więcej skrajnych przypadków. Btw, pamiętaj, że istnieje limit liczby takich parametrów, które możesz dodać, w zależności od maksymalnego dozwolonego rozmiaru pakietu mysql. Możesz to zmienić lub zadbać o to, aby nie przekroczyć tego limitu. Twoje zdrowie! :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql Połącz dwie kolumny podczas wyszukiwania za pomocą LIKE

  2. Utwórz zmienną tabeli w MySQL

  3. sqlalchemy + kolba , otrzymywanie wszystkich postów w ciągu dnia

  4. Ostrzeżenie:mysqli_error() oczekuje dokładnie 1 parametru, podano 0

  5. Najłatwiejszy sposób na przekonwertowanie obiektu Blob na tablicę bajtów