sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo creo una consulta segura para realizar una inserción masiva en MySQL usando MySQLCommand en C# sin usar un proceso almacenado?

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
}

Puede ver un subproceso relevante aquí !. Debo haberme perdido algo trivial, pero eso es trivial para que tú lo arregles. Por supuesto que sabes lo que sucede cuando contacts no tiene elementos. No veo más casos extremos. Por cierto, tenga en cuenta que hay un límite en la cantidad de parámetros que puede agregar según el tamaño máximo de paquete permitido de mysql. Puedes cambiarlo, o cuidarte de no sobrepasar ese límite. ¡Salud! :)