Heim >Datenbank >MySQL-Tutorial >Wie fügt man mithilfe von Tabellenwertparametern effizient mehrere Zeilen mit parametrisierten Variablen in C# ein?

Wie fügt man mithilfe von Tabellenwertparametern effizient mehrere Zeilen mit parametrisierten Variablen in C# ein?

Barbara Streisand
Barbara StreisandOriginal
2025-01-12 06:02:44309Durchsuche

How to Efficiently Insert Multiple Rows with Parameterized Variables in C# Using Table-Valued Parameters?

Nutzung tabellenwertiger Parameter für die Massendateneinfügung in C#

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.

Definieren des benutzerdefinierten Tabellentyps

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>

Erstellung gespeicherter Prozeduren

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>

C#-Implementierung: Datentabelle und Ausführung gespeicherter Prozeduren

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:

aus
<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!

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