Panduan ini menunjukkan cara untuk memasukkan berbilang baris dengan cekap ke dalam pangkalan data SQL Server (2008 atau lebih baru) menggunakan pertanyaan berparameter tunggal dalam C#. Teknik ini, menggunakan parameter bernilai jadual, meningkatkan prestasi dengan ketara berbanding pernyataan sisipan individu.
Mulakan dengan mencipta jenis jadual yang ditentukan pengguna dalam SQL Server untuk mewakili struktur data untuk sisipan anda:
<code class="language-sql">CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) ) GO</code>
Seterusnya, buat prosedur tersimpan yang menerima jenis jadual yang ditentukan pengguna ini sebagai parameter:
<code class="language-sql">CREATE PROCEDURE MyProcedure ( @MyTable dbo.MyTableType READONLY -- READONLY is crucial for table-valued parameters ) AS BEGIN INSERT INTO MyTable (Col1, Col2) SELECT Col1, Col2 FROM @MyTable; END; GO</code>
Dalam kod C# anda, bina DataTable
untuk menyimpan data yang anda ingin masukkan:
<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... For example: DataRow row1 = dt.NewRow(); row1["Col1"] = 1; row1["Col2"] = "Value 1"; dt.Rows.Add(row1); // ...add more rows as needed...</code>
Akhir sekali, laksanakan prosedur tersimpan menggunakan SqlCommand
:
<code class="language-csharp">using (SqlConnection con = new SqlConnection("YourConnectionString")) { using (SqlCommand cmd = new SqlCommand("MyProcedure", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MyTable", dt); //AddWithValue handles SqlDbType automatically con.Open(); cmd.ExecuteNonQuery(); } }</code>
Kaedah ini menyediakan cara yang sangat cekap untuk memasukkan berbilang baris dengan nilai berparameter, menghalang kerentanan suntikan SQL dan meningkatkan prestasi pangkalan data berbanding dengan pernyataan INSERT
individu. Ingat untuk menggantikan "YourConnectionString"
dengan rentetan sambungan sebenar anda.
Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Berbilang Baris dengan Pembolehubah Berparameter dengan Cekap dalam C# Menggunakan Parameter Bernilai Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!