Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Lulus Senarai Rentetan daripada C# ke Prosedur Tersimpan Pelayan SQL dengan Cekap?
C# SQL Server: Melepasi Senarai kepada Prosedur Tersimpan
Dalam C#, adalah mungkin untuk memanggil prosedur tersimpan SQL Server melalui kod . Walau bagaimanapun, menghantar senarai rentetan adalah tidak mudah. Artikel ini meneroka kaedah alternatif menggunakan Jenis Jadual Ditakrifkan Pengguna (UDT) sebaliknya.
Mencipta Jenis Jadual Ditakrifkan Pengguna (UDT)
SQL Server 2008 memperkenalkan UDT , yang menyediakan cara berstruktur untuk menghantar jenis data yang kompleks kepada prosedur tersimpan. Untuk mencipta UDT bagi senarai rentetan:
CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );
Mengubah suai Prosedur Tersimpan
Untuk menerima parameter UDT, prosedur tersimpan perlu diubah suai seperti berikut :
CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- Just return the items we passed in SELECT l.Item FROM @list l; END
Meluluskan Senarai daripada C# Kod
Akhir sekali, berikut ialah cara untuk lulus senarai daripada kod C#:
using System.Data; var con = new SqlConnection(connstring); con.Open(); using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con)) { using (var table = new DataTable()) { table.Columns.Add("Item", typeof(string)); for (int i = 0; i < 10; i++) table.Rows.Add("Item " + i.ToString()); var pList = new SqlParameter("@list", SqlDbType.Structured); pList.TypeName = "dbo.StringList"; pList.Value = table; cmd.Parameters.Add(pList); using (var dr = cmd.ExecuteReader()) { while (dr.Read()) Console.WriteLine(dr["Item"].ToString()); } } }
Kesimpulan
Menggunakan UDT adalah cara yang berkesan cara untuk menghantar senarai rentetan kepada prosedur tersimpan SQL Server daripada kod C#. Dengan mengikut langkah yang digariskan di atas, pembangun boleh mengendalikan senarai rentetan yang dinamik dan besar dengan mudah dalam interaksi pangkalan data mereka.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Lulus Senarai Rentetan daripada C# ke Prosedur Tersimpan Pelayan SQL dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!