Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memasukkan Data Pukal dengan Cekap dengan Pertanyaan Berparameter dalam C#?

Bagaimanakah Saya Boleh Memasukkan Data Pukal dengan Cekap dengan Pertanyaan Berparameter dalam C#?

Barbara Streisand
Lepaskan: 2025-01-03 21:58:39
asal
591 orang telah melayarinya

How Can I Efficiently Bulk Insert Data with Parameterized Queries in C#?

Memasukkan Pembolehubah Berparameter Pukal ke dalam Pangkalan Data dalam C

Dalam C#, memasukkan berbilang baris ke dalam pangkalan data boleh menjadi proses yang memakan masa jika setiap baris memerlukan INSERT yang berasingan kenyataan. Untuk mengoptimumkan prestasi, adalah wajar untuk memasukkan berbilang baris dalam satu pertanyaan sambil turut menggunakan pertanyaan berparameter untuk menghalang serangan suntikan SQL.

Untuk mencapai ini, anda boleh memanfaatkan kuasa parameter bernilai jadual, yang membolehkan anda untuk menghantar jenis data berstruktur (seperti Jadual Data) kepada prosedur tersimpan. Ini membolehkan anda memasukkan berbilang baris dengan satu arahan.

Untuk melaksanakan pendekatan ini, ikut langkah berikut:

1. Buat Jenis Jadual Ditakrifkan Pengguna (UDT)

Buat UDT untuk mewakili baris yang ingin anda masukkan. Contohnya, jika anda mempunyai lajur "Col1" dan "Col2", anda boleh mencipta UDT seperti berikut:

CREATE TYPE MyTableType AS TABLE
(
    Col1 int,
    Col2 varchar(20)
)
GO
Salin selepas log masuk

2. Buat Prosedur Tersimpan

Buat prosedur tersimpan untuk menerima UDT sebagai parameter:

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

3. Laksanakan Prosedur Tersimpan daripada C

Isi Jadual Data dengan data anda:

DataTable dt = new DataTable();
dt.Columns.Add("Col1", typeof(int));
dt.Columns.Add("Col2", typeof(string));

// Populate data
Salin selepas log masuk

Buka sambungan dan laksanakan prosedur tersimpan menggunakan SqlCommand:

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();
    }
}
Salin selepas log masuk

Oleh menggunakan parameter bernilai jadual dan prosedur tersimpan, anda boleh meningkatkan prestasi sisipan pukal dengan ketara, sementara juga mengekalkan keselamatan dan kecekapan pertanyaan berparameter.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Data Pukal dengan Cekap dengan Pertanyaan Berparameter dalam 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