Heim >Backend-Entwicklung >C++ >Wie kann ich aus C# effizient mehrere parametrisierte Zeilen in eine SQL Server-Datenbank einfügen?

Wie kann ich aus C# effizient mehrere parametrisierte Zeilen in eine SQL Server-Datenbank einfügen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-05 00:47:40214Durchsuche

How Can I Efficiently Insert Multiple Parameterized Rows into a SQL Server Database from C#?

Einfügen mehrerer parametrisierter Zeilen in die Datenbank in C

Bei der Arbeit mit großen Datensätzen oder häufigen Aktualisierungen ist es entscheidend, den Datenbankbetrieb zu optimieren. Das effiziente Einfügen mehrerer Zeilen in eine Datenbank in C# stellt eine erhebliche Herausforderung dar, insbesondere wenn die Daten aus Webquellen empfangen werden und aus Sicherheitsgründen parametrisiert werden müssen.

Aktuelle Einschränkungen des Ansatzes

Der bereitgestellte Code Snippet verwendet eine Schleife, um einzelne Einfügeanweisungen für jedes Datenelement auszuführen:

foreach(string data in Scraper){
    // ...
    Command.executeNonQuery(); 
    conn.close();
}

Dieser iterative Ansatz ist jedoch ineffizient und kann zu Fehlfunktionen führen zu Leistungsengpässen bei größeren Datensätzen.

Optimierte Lösung mithilfe von Tabellenwertparametern

Für eine schnellere und effizientere Dateneinfügung in SQL Server 2008 und höher bieten Tabellenwertparameter eine überzeugende Lösung. Indem Sie einen benutzerdefinierten Tabellentyp definieren und ihn in einer gespeicherten Prozedur nutzen, können Sie mehrere Zeilen in einem einzigen Vorgang einfügen.

Schritt 1: Erstellen Sie einen benutzerdefinierten Tabellentyp

CREATE TYPE MyTableType AS TABLE
(
    Col1 int,
    Col2 varchar(20) 
)

Schritt 2: Erstellen Sie eine gespeicherte Prozedur mit Tabellenwert Parameter

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

Schritt 3: Gespeicherte Prozedur aus C# ausführen

DataTable dt = new DataTable();
// Fill data table with values...

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();
    }
}

Vorteile der Verwendung von Tabellenwertparametern

  • Reduzierter Netzwerkverkehr: Anstatt mehrere INSERT-Anweisungen zu senden, nur eine Anfrage wird gesendet und enthält einen Stapel von Zeilen.
  • Verbesserte Leistung: Die Datenbank-Engine optimiert den Einfügungsprozess, was zu schnelleren Ausführungszeiten führt.
  • Erhöhte Sicherheit: Parametrisierte Abfragen tragen dazu bei, SQL-Injection-Angriffe zu verhindern, da die Datenwerte getrennt von der Abfrage übergeben werden.

Das obige ist der detaillierte Inhalt vonWie kann ich aus C# effizient mehrere parametrisierte Zeilen in eine SQL Server-Datenbank einfügen?. 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