Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Memasukkan Data Berparameter Secara Pukal ke dalam Pelayan SQL Menggunakan C#?

Bagaimanakah Saya Boleh Memasukkan Data Berparameter Secara Pukal ke dalam Pelayan SQL Menggunakan C#?

Mary-Kate Olsen
Lepaskan: 2025-01-12 07:31:47
asal
460 orang telah melayarinya

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

Mengoptimumkan Sisipan Data Pukal ke dalam Pelayan SQL dengan C#

Mengendalikan set data yang besar selalunya memerlukan teknik penyisipan pangkalan data yang cekap. Apabila berurusan dengan data bersumberkan web, pertanyaan berparameter adalah penting untuk keselamatan dan prestasi. Artikel ini menunjukkan kaedah yang lebih baik daripada pendekatan baris demi baris yang lazim dan tidak cekap.

Mengatasi Sisipan Satu Baris Yang Tidak Cekap

Sisipan berulang menggunakan pernyataan INSERT individu (mis., INSERT INTO DATABASE('web',@data)) adalah perlahan dan terdedah kepada suntikan SQL.

Penyelesaian: Parameter Nilai Jadual (TVP)

SQL Server 2008 dan versi yang lebih baru menyokong Table-Valued Parameters (TVP), menawarkan kaedah yang sangat cekap untuk sisipan pukal sambil mengekalkan parameterisasi untuk keselamatan.

1. Menentukan Jenis Jadual Ditakrifkan Pengguna (UDT)

Mulakan dengan mencipta UDT yang mencerminkan struktur jadual pangkalan data sasaran anda:

<code class="language-sql">CREATE TYPE MyTableType AS TABLE
(
    Col1 int,
    Col2 varchar(20)
)
GO</code>
Salin selepas log masuk

2. Mencipta Prosedur Tersimpan dengan TVP

Seterusnya, buat prosedur tersimpan menerima TVP:

<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>
Salin selepas log masuk

3. Pelaksanaan C# menggunakan TVP

Kod C# menggunakan DataTable untuk menyimpan data sebelum dimasukkan:

<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>
Salin selepas log masuk

Pendekatan ini memanfaatkan TVP untuk pemasukan data pukal yang jauh lebih pantas dan lebih selamat berbanding kenyataan INSERT individu. Penggunaan AddWithValue memudahkan pengendalian parameter. Ingat untuk menggantikan "ConnectionString" dengan rentetan sambungan sebenar anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Data Berparameter Secara Pukal ke dalam Pelayan SQL Menggunakan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan