Apabila bekerja dengan set data yang luas atau kemas kini yang kerap, adalah penting untuk mengoptimumkan operasi pangkalan data. Memasukkan berbilang baris ke dalam pangkalan data dengan cekap dalam C# menimbulkan cabaran yang ketara, terutamanya jika data diterima daripada sumber web dan perlu diparameterkan untuk tujuan keselamatan.
Kod yang disediakan coretan menggunakan gelung untuk melaksanakan penyata sisipan individu bagi setiap data elemen:
foreach(string data in Scraper){ // ... Command.executeNonQuery(); conn.close(); }
Walau bagaimanapun, pendekatan berulang ini tidak cekap dan boleh membawa kepada kesesakan prestasi dengan set data yang lebih besar.
Untuk lebih pantas dan lebih banyak lagi sisipan data yang cekap dalam SQL Server 2008 dan kemudiannya, parameter bernilai jadual menawarkan penyelesaian yang menarik. Dengan mentakrifkan jenis jadual yang ditentukan pengguna dan memanfaatkannya dalam prosedur yang disimpan, anda boleh memasukkan berbilang baris dalam satu operasi.
Langkah 1: Buat Jenis Jadual Ditakrifkan Pengguna
CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) )
Langkah 2: Buat Prosedur Tersimpan dengan Bernilai Jadual Parameter
CREATE PROCEDURE MyProcedure ( @MyTable dbo.MyTableType READONLY -- NOTE: table valued parameters must be Readonly! ) AS INSERT INTO MyTable (Col1, Col2) SELECT Col1, Col2 FROM @MyTable
Langkah 3: Laksanakan Prosedur Tersimpan daripada C#
DataTable dt = new DataTable(); // Fill data table with values... 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(); } }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Berbilang Baris Parameter dengan Cekap ke dalam Pangkalan Data Pelayan SQL daripada C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!