Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erstelle ich eine sichere Abfrage zum Durchführen einer Masseneinfügung in MySQL mit MySQLCommand in C#, ohne eine gespeicherte Prozedur zu verwenden?

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
}

Sie können einen relevanter Thread hier !. Ich muss etwas Triviales übersehen haben, aber das ist trivial für dich zu beheben. Natürlich wissen Sie, was bei contacts passiert hat keine Elemente. Ich sehe keine weiteren Grenzfälle. Übrigens, beachten Sie, dass es eine Begrenzung gibt, wie viele solcher Parameter Sie hinzufügen können, abhängig von der maximal zulässigen Paketgröße von mysql. Sie können es ändern oder darauf achten, dass dieses Limit nicht überschritten wird. Prost! :)