sql >> Databasteknik >  >> RDS >> Mysql

Hur skapar jag en säker fråga för att utföra en massinsättning i MySQL med MySQLCommand i C# utan att använda en lagrad proc?

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
}

Du kan se en relevant tråd här !. Jag måste ha missat något trivialt, men det är trivialt för dig att fixa. Naturligtvis vet du vad som händer när contacts har inga element. Jag ser inte fler kantfall. Tänk på att det finns en gräns för hur många sådana parametrar du kan lägga till beroende på mysqls max tillåtna paketstorlek. Du kan ändra den, eller se till att inte överskrida den gränsen. Skål! :)



  1. Hur man optimerar smärtsamt långsam MySQL-fråga som hittar korrelationer

  2. Hur kan jag få en lista över MySQL-databaser i PHP med PDO?

  3. välj distinct count(id) kontra select count(distinct id)

  4. Enkel lösenordskryptering - hur gör jag?