Heim > Datenbank > MySQL-Tutorial > Wie fügt man mit C# effizient mehrere parametrisierte Zeilen in eine Datenbank ein?

Wie fügt man mit C# effizient mehrere parametrisierte Zeilen in eine Datenbank ein?

Susan Sarandon
Freigeben: 2025-01-12 08:19:42
Original
936 Leute haben es durchsucht

How to Efficiently Insert Multiple Parameterized Rows into a Database using C#?

Optimieren von Datenbankeinfügungen in C#: Ein einzelner parametrisierter Abfrageansatz

Das einzelne Einfügen zahlreicher Zeilen in eine Datenbank ist ineffizient. Dieser Artikel demonstriert eine leistungsstarke Methode, die eine einzelne parametrisierte Abfrage in C# verwendet, um eine Masseneinfügung zu erreichen.

Der Schlüssel liegt in der Nutzung gespeicherter Prozeduren und Tabellenwertparameter. Dieser Ansatz umfasst drei Hauptschritte:

  1. Definieren eines Tabellentyps:

    Erstellen Sie einen benutzerdefinierten SQL Server-Tabellentyp, um die Struktur Ihrer Daten zu definieren, indem Sie Spaltennamen und Datentypen angeben.

  2. Erstellen einer gespeicherten Prozedur:

    Entwickeln Sie eine gespeicherte Prozedur, die Ihren benutzerdefinierten Tabellentyp als schreibgeschützten Tabellenwertparameter akzeptiert. Durch dieses Verfahren werden die Daten dann in Ihre Zieldatenbanktabelle eingefügt. Denken Sie daran, dass Tabellenwertparameter sein müssen READONLY.

  3. Implementierung des C#-Codes:

    In Ihrer C#-Anwendung:

    • Erstellen Sie ein DataTable-Objekt, das die Struktur Ihres benutzerdefinierten Tabellentyps widerspiegelt.
    • Füllen Sie dieses DataTable mit den Daten aus, die Sie einfügen möchten.
    • Führen Sie die gespeicherte Prozedur aus und übergeben Sie DataTable als Tabellenwertparameter.

Hier ist ein Beispiel, das diesen Prozess veranschaulicht:

Tabellentyp (SQL):

<code class="language-sql">CREATE TYPE MyTableType AS TABLE
(
    Col1 INT,
    Col2 VARCHAR(20)
)
GO</code>
Nach dem Login kopieren

Gespeicherte Prozedur (SQL):

<code class="language-sql">CREATE PROCEDURE MyProcedure (@MyTable MyTableType READONLY)
AS
BEGIN
    INSERT INTO MyTable (Col1, Col2)
    SELECT Col1, Col2 FROM @MyTable;
END;
GO</code>
Nach dem Login kopieren

C#-Code:

<code class="language-csharp">using System.Data;
using System.Data.SqlClient;

// ... other code ...

DataTable dt = new DataTable();
dt.Columns.Add("Col1", typeof(int));
dt.Columns.Add("Col2", typeof(string));

// Populate dt with your data here...  e.g.,
//DataRow row = dt.NewRow();
//row["Col1"] = 1;
//row["Col2"] = "Value1";
//dt.Rows.Add(row);


using (SqlConnection con = new SqlConnection("ConnectionString"))
{
    using (SqlCommand cmd = new SqlCommand("MyProcedure", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@MyTable", dt); //AddWithValue handles type inference
        con.Open();
        cmd.ExecuteNonQuery();
    }
}</code>
Nach dem Login kopieren

Diese Methode verbessert die Effizienz beim Einfügen in die Datenbank erheblich, indem die Anzahl der Datenbank-Roundtrips reduziert wird, was zu einer schnelleren und skalierbareren Datenverarbeitung führt.

Das obige ist der detaillierte Inhalt vonWie fügt man mit C# effizient mehrere parametrisierte Zeilen in eine Datenbank ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage