Heim > Datenbank > MySQL-Tutorial > Wie kann ich mithilfe von C# effizient parametrisierte Daten massenhaft in SQL Server einfügen?

Wie kann ich mithilfe von C# effizient parametrisierte Daten massenhaft in SQL Server einfügen?

Mary-Kate Olsen
Freigeben: 2025-01-12 07:31:47
Original
460 Leute haben es durchsucht

How Can I Efficiently Bulk Insert Parameterized Data into SQL Server Using C#?

Optimierung der Massendateneinfügung in SQL Server mit C#

Der Umgang mit großen Datensätzen erfordert häufig effiziente Techniken zum Einfügen in die Datenbank. Beim Umgang mit Daten aus dem Internet sind parametrisierte Abfragen für Sicherheit und Leistung von entscheidender Bedeutung. Dieser Artikel zeigt eine bessere Methode als der übliche, ineffiziente zeilenweise Ansatz.

Bekämpfung ineffizienter einzeiliger Einfügungen

Iteratives Einfügen mit einzelnen INSERT-Anweisungen (z. B. INSERT INTO DATABASE('web',@data)) ist langsam und anfällig für SQL-Injection.

Die Lösung: Tabellenwertparameter (TVPs)

SQL Server 2008 und spätere Versionen unterstützen Table-Valued Parameters (TVPs) und bieten eine hocheffiziente Methode zur Masseneinfügung unter Beibehaltung der Parametrisierung aus Sicherheitsgründen.

1. Definieren eines benutzerdefinierten Tabellentyps (UDT)

Erstellen Sie zunächst einen UDT, der die Struktur Ihrer Zieldatenbanktabelle widerspiegelt:

<code class="language-sql">CREATE TYPE MyTableType AS TABLE
(
    Col1 int,
    Col2 varchar(20)
)
GO</code>
Nach dem Login kopieren

2. Erstellen einer gespeicherten Prozedur mit einem TVP

Als nächstes erstellen Sie eine gespeicherte Prozedur, die das TVP akzeptiert:

<code class="language-sql">CREATE PROCEDURE MyProcedure
(
    @MyTable dbo.MyTableType READONLY -- READONLY is crucial for TVPs!
)
AS

INSERT INTO MyTable (Col1, Col2)
SELECT Col1, Col2
FROM @MyTable

GO</code>
Nach dem Login kopieren

3. C#-Implementierung mit dem TVP

Der C#-Code verwendet ein DataTable, um die Daten vor dem Einfügen zu speichern:

<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

using (var con = new SqlConnection("ConnectionString"))
{
    using (var cmd = new SqlCommand("MyProcedure", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@MyTable", dt); // Simplified parameter addition
        con.Open();
        cmd.ExecuteNonQuery();
    }
}</code>
Nach dem Login kopieren

Dieser Ansatz nutzt TVPs für eine wesentlich schnellere und sicherere Massendateneinfügung im Vergleich zu einzelnen INSERT Anweisungen. Die Verwendung von AddWithValue vereinfacht die Parameterbehandlung. Denken Sie daran, "ConnectionString" durch Ihre tatsächliche Verbindungszeichenfolge zu ersetzen.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von C# effizient parametrisierte Daten massenhaft in SQL Server einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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