Memasukkan Berbilang Baris Berparameter dengan Pertanyaan Tunggal dalam C#
Pertanyaan berparameter membenarkan pembangun melaksanakan pernyataan SQL tanpa nilai pengekodan keras, menghalang SQL serangan suntikan dan meningkatkan prestasi. Memasukkan berbilang baris dengan nilai berparameter boleh menjadi cekap, terutamanya apabila menggunakan bilangan baris yang lebih besar.
Dalam kod yang disediakan, setiap baris dimasukkan secara berasingan, yang boleh menjadi perlahan. Untuk menangani perkara ini, anda boleh memanfaatkan parameter bernilai jadual dengan SQL Server 2008 dan ke atas.
Mencipta Parameter Bernilai Jadual
Pertama, cipta pengguna- jenis jadual yang ditentukan yang mentakrifkan lajur anda data:
CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) )
Membuat Prosedur Tersimpan
Seterusnya, buat prosedur tersimpan yang menerima parameter bernilai jadual:
CREATE PROCEDURE MyProcedure ( @MyTable dbo.MyTableType READONLY ) AS INSERT INTO MyTable (Col1, Col2) SELECT Col1, Col2 FROM @MyTable GO
Ambil perhatian bahawa parameter @MyTable ditandakan sebagai READONLY kerana parameter bernilai jadual mestilah baca sahaja.
Melaksanakan Prosedur Tersimpan dengan Jadual Data
Akhir sekali, laksanakan prosedur tersimpan daripada C# menggunakan Jadual Data:
DataTable dt = new DataTable(); dt.Columns.Add("Col1", typeof(int)); dt.Columns.Add("Col2", typeof(string)); // Fill your data table here 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(); } }
Dengan menggunakan parameter bernilai jadual, anda boleh memasukkan berbilang baris dengan pertanyaan berparameter tunggal, dengan ketara meningkatkan prestasi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Berbilang Baris dengan Cekap dengan Pertanyaan Berparameter dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!