sql >> Database teknologi >  >> RDS >> Mysql

Hvordan opretter jeg en sikker forespørgsel til at udføre en masseindsættelse i MySQL ved hjælp af MySQLCommand i C# uden at bruge en lagret 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 her !. Jeg må have gået glip af noget trivielt, men det er trivielt for dig at rette op på. Selvfølgelig ved du, hvad der sker, når contacts har ingen elementer. Jeg kan ikke se flere kantsager. Forresten, der er en grænse for, hvor mange sådanne parametre du kan tilføje afhængigt af mysqls maksimalt tilladte pakkestørrelse. Du kan ændre den, eller sørge for ikke at overskride den grænse. Skål! :)



  1. FLUTTER&PHP - Jeg kan ikke sende til mysql-database fra min flutter-app

  2. Sådan stopper du mysqld

  3. Få øverste 1 række af hver gruppe

  4. Forespørgsel om at forbinde to tabeller