Heim >Datenbank >MySQL-Tutorial >Wie fügt man mithilfe von Tabellenwertparametern effizient mehrere Zeilen mit parametrisierten Variablen in C# ein?
Diese Anleitung zeigt, wie Sie mithilfe einer einzigen parametrisierten Abfrage in C# effizient mehrere Zeilen in eine SQL Server-Datenbank (2008 oder höher) einfügen. Diese Technik, die Tabellenwertparameter verwendet, verbessert die Leistung gegenüber einzelnen Einfügeanweisungen erheblich.
Erstellen Sie zunächst einen benutzerdefinierten Tabellentyp in SQL Server, um die Datenstruktur für Ihre Einfügung darzustellen:
<code class="language-sql">CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) ) GO</code>
Als nächstes erstellen Sie eine gespeicherte Prozedur, die diesen benutzerdefinierten Tabellentyp als Parameter akzeptiert:
<code class="language-sql">CREATE PROCEDURE MyProcedure ( @MyTable dbo.MyTableType READONLY -- READONLY is crucial for table-valued parameters ) AS BEGIN INSERT INTO MyTable (Col1, Col2) SELECT Col1, Col2 FROM @MyTable; END; GO</code>
Konstruieren Sie in Ihrem C#-Code ein DataTable
für die Daten, die Sie einfügen möchten:
<code class="language-csharp">DataTable dt = new DataTable(); dt.Columns.Add("Col1", typeof(int)); dt.Columns.Add("Col2", typeof(string)); // Populate the DataTable with your data here... For example: DataRow row1 = dt.NewRow(); row1["Col1"] = 1; row1["Col2"] = "Value 1"; dt.Rows.Add(row1); // ...add more rows as needed...</code>
Führen Sie abschließend die gespeicherte Prozedur mit SqlCommand
:
<code class="language-csharp">using (SqlConnection con = new SqlConnection("YourConnectionString")) { using (SqlCommand cmd = new SqlCommand("MyProcedure", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MyTable", dt); //AddWithValue handles SqlDbType automatically con.Open(); cmd.ExecuteNonQuery(); } }</code>
Diese Methode bietet eine äußerst effiziente Möglichkeit, mehrere Zeilen mit parametrisierten Werten einzufügen, wodurch SQL-Injection-Schwachstellen verhindert und die Datenbankleistung im Vergleich zu einzelnen INSERT
-Anweisungen gesteigert wird. Denken Sie daran, "YourConnectionString"
durch Ihre tatsächliche Verbindungszeichenfolge zu ersetzen.
Das obige ist der detaillierte Inhalt vonWie fügt man mithilfe von Tabellenwertparametern effizient mehrere Zeilen mit parametrisierten Variablen in C# ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!