Heim >Backend-Entwicklung >C++ >Wie kann ich aus C# effizient mehrere parametrisierte Zeilen in eine SQL Server-Datenbank einfügen?
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.
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.
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(); } }
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!