Meluluskan Senarai Rentetan kepada Prosedur Tersimpan dalam C#
Apabila memanggil prosedur tersimpan SQL Server daripada C#, menghantar senarai rentetan sebagai parameter boleh mencabar. Walau bagaimanapun, terdapat penyelesaian menggunakan ciri Jenis Jadual Ditakrifkan Pengguna (UDTT) dalam SQL Server 2008 dan kemudian.
Mencipta UDTT
Mula-mula, buat UDTT untuk mewakili senarai rentetan:
CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );
Mengubah suai yang Disimpan Prosedur
Dalam prosedur tersimpan, isytiharkan UDTT sebagai parameter:
CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- Just return the items we passed in SELECT l.Item FROM @list l; END
Mengisi UDTT dalam C#
Dalam C# , buat Jadual Data dan tambahkan lajur rentetan jenis bernama "Item":
using System.Data; using System.Data.SqlClient; ... DataTable table = new DataTable(); table.Columns.Add("Item", typeof(string));
Isi Jadual Data dengan senarai rentetan:
for (int i = 0; i < 10; i++) table.Rows.Add("Item " + i.ToString());
Buat SqlParameter untuk lulus Jadual Data sebagai UDTT:
SqlParameter pList = new SqlParameter("@list", SqlDbType.Structured); pList.TypeName = "dbo.StringList"; pList.Value = table;
Meluluskan Senarai kepada yang Disimpan Prosedur
Tambah SqlParameter pada SqlCommand dan laksanakan prosedur tersimpan:
using (SqlConnection con = new SqlConnection(connstring)) { con.Open(); using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con)) { cmd.Parameters.Add(pList); using (SqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) Console.WriteLine(dr["Item"].ToString()); } } }
Pendekatan ini membolehkan anda menghantar senarai rentetan kepada prosedur tersimpan dalam format berstruktur, membolehkan pertanyaan kompleks.
Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Senarai Rentetan kepada Prosedur Tersimpan Pelayan SQL dari C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!