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
Freigeben: 2025-01-05 00:47:40
Original
249 Leute haben es durchsucht

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();
}
Nach dem Login kopieren

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) 
)
Nach dem Login kopieren

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
Nach dem Login kopieren

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();
    }
}
Nach dem Login kopieren

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!

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