Heim >Backend-Entwicklung >C++ >Wie kann ich effiziente parametrisierte Masseneinfügungen in C# und SQL Server durchführen?

Wie kann ich effiziente parametrisierte Masseneinfügungen in C# und SQL Server durchführen?

Susan Sarandon
Susan SarandonOriginal
2024-12-30 22:17:10812Durchsuche

How Can I Perform Efficient Parameterized Bulk Inserts in C# and SQL Server?

Durchführen von Masseneinfügungen mit parametrisierten Variablen in C#

Bei Datenbankoperationen ist es oft wünschenswert, mehrere parametrisierte Variablen in eine Datenbank einzufügen, insbesondere wenn Die Datenbank empfängt Daten von einer Webanwendung. Um solche Vorgänge zu optimieren und Wiederholungen zu vermeiden, kann man eine gespeicherte Prozedur und einen Tabellenwertparameter verwenden.

Um dies in C# zu erreichen, befolgen Sie diese Schritte:

  1. Erstellen Sie einen benutzerdefinierten Tabellentyp (UDT):

    • Definieren Sie einen UDT entsprechend der Struktur der Daten, die Sie einfügen möchten. Zum Beispiel:

      CREATE TYPE MyTableType AS TABLE
      (
          Col1 int,
          Col2 varchar(20)
      )
      GO
  2. Erstellen Sie eine gespeicherte Prozedur mit Tabellenwertparametern:

    • Erstellen Sie eine gespeicherte Prozedur, die den UDT als Parameter akzeptiert. Die Prozedur fügt die Daten in die Zieldatenbanktabelle ein:

      CREATE PROCEDURE MyProcedure
      (
          @MyTable dbo.MyTableType READONLY -- Note: Table-valued parameters must be readonly
      )
      AS
      INSERT INTO MyTable (Col1, Col2)
      SELECT Col1, Col2
      FROM @MyTable
      GO
  3. Eine Datentabelle füllen:

    • Initialisieren Sie eine DataTable mit Spaltendefinitionen, die dem UDT entsprechen, und füllen Sie sie mit Ihrem Daten.
  4. Führen Sie die gespeicherte Prozedur mit Parametern aus:

    • Stellen Sie eine Verbindung zur Datenbank her und erstellen Sie ein Befehlsobjekt für die gespeicherte Prozedur.
    • Fügen Sie die gefüllte DataTable als strukturierten Typ zu den Befehlsparametern hinzu Parameter.
    • Führen Sie den Befehl aus, um die Masseneinfügung durchzuführen.

      DataTable dt = new DataTable();
      dt.Columns.Add("Col1", typeof(int));
      dt.Columns.Add("Col2", typeof(string));
      
      // Fill your data table here
      
      using (var con = new SqlConnection("ConnectionString"))
      {
        using(var cmd = new SqlCommand("MyProcedure", con))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@MyTable", SqlDbType.Structured).Value = dt;
            con.Open();
            cmd.ExecuteNonQuery();
        }
      }

Durch Befolgen dieser Schritte können Sie eine effiziente Ausführung durchführen parametrisierte Masseneinfügungen in eine SQL Server-Datenbank mithilfe von C#-Code. Dieser Ansatz verhindert nicht nur Wiederholungen, sondern optimiert auch die Datenbankleistung, indem eine einzelne Abfrage für mehrere Zeilen ausgeführt wird.

Das obige ist der detaillierte Inhalt vonWie kann ich effiziente parametrisierte Masseneinfügungen in C# und SQL Server durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn