sql >> Databáze >  >> RDS >> Mysql

Jak vytvořím bezpečný dotaz pro provádění hromadného vkládání v MySQL pomocí MySQLCommand v C# bez použití uloženého 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
}

Můžete vidět příslušné vlákno zde ! Musel jsem přehlédnout něco triviálního, ale pro vás je triviální to opravit. Samozřejmě víte, co se stane, když contacts nemá žádné prvky. Nevidím více okrajových případů. Btw, pamatujte, že existuje limit, kolik takových parametrů můžete přidat v závislosti na maximální povolené velikosti paketu mysql. Můžete to změnit, nebo se postarat o to, abyste tento limit nepřekročili. Na zdraví! :)



  1. Jak vytvořit omezení cizího klíče pomocí ON DELETE CASCADE v SQL Server - SQL Server / Výukový program TSQL, část 80

  2. UnboundLocalError:místní proměnná 'cursor' odkazovaná před přiřazením

  3. MySQL Connector připojující k výčtu hodnotu o jednu menší, než je skutečná hodnota

  4. Jak zrušit všechny tabulky v databázi bez zrušení samotné databáze?