Heim >Backend-Entwicklung >C++ >Wie kann ich effizient Massendaten mit parametrisierten Abfragen in C# einfügen?
In C# kann das Einfügen mehrerer Zeilen in eine Datenbank ein zeitaufwändiger Prozess sein, wenn jede Zeile ein separates INSERT erfordert Stellungnahme. Um die Leistung zu optimieren, ist es wünschenswert, mehrere Zeilen in eine einzelne Abfrage einzufügen und gleichzeitig parametrisierte Abfragen zu verwenden, um SQL-Injection-Angriffe zu verhindern.
Um dies zu erreichen, können Sie die Leistungsfähigkeit von Tabellenwertparametern nutzen, die Ihnen ermöglichen um einen strukturierten Datentyp (z. B. eine DataTable) an eine gespeicherte Prozedur zu übergeben. Dadurch können Sie mehrere Zeilen mit einem einzigen Befehl einfügen.
Um diesen Ansatz zu implementieren, befolgen Sie diese Schritte:
Erstellen Sie einen UDT, um die Zeilen darzustellen, die Sie einfügen möchten. Wenn Sie beispielsweise die Spalten „Col1“ und „Col2“ haben, können Sie einen UDT wie folgt erstellen:
CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) ) GO
Erstellen Sie eine gespeicherte Prozedur, um den UDT als Parameter zu akzeptieren:
CREATE PROCEDURE MyProcedure ( @MyTable dbo.MyTableType READONLY -- Table valued parameters must be ReadOnly! ) AS INSERT INTO MyTable (Col1, Col2) SELECT Col1, Col2 FROM @MyTable GO
Füllen Sie eine Datentabelle mit Ihren Daten aus:
DataTable dt = new DataTable(); dt.Columns.Add("Col1", typeof(int)); dt.Columns.Add("Col2", typeof(string)); // Populate data
Öffnen Sie eine Verbindung und führen Sie die gespeicherte Prozedur mit einem SqlCommand aus:
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(); } }
By Durch die Verwendung von Tabellenwertparametern und gespeicherten Prozeduren können Sie die Leistung von Masseneinfügungen deutlich verbessern und gleichzeitig die Sicherheit und Effizienz parametrisierter Operationen aufrechterhalten Abfragen.
Das obige ist der detaillierte Inhalt vonWie kann ich effizient Massendaten mit parametrisierten Abfragen in C# einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!