Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Meluluskan Senarai Rentetan kepada Prosedur Tersimpan Pelayan SQL dari C#?

Bagaimana untuk Meluluskan Senarai Rentetan kepada Prosedur Tersimpan Pelayan SQL dari C#?

Susan Sarandon
Lepaskan: 2025-01-05 00:53:40
asal
243 orang telah melayarinya

How to Pass a List of Strings to a SQL Server Stored Procedure from C#?

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
);
Salin selepas log masuk

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
Salin selepas log masuk

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));
Salin selepas log masuk

Isi Jadual Data dengan senarai rentetan:

for (int i = 0; i < 10; i++)
    table.Rows.Add("Item " + i.ToString());
Salin selepas log masuk

Buat SqlParameter untuk lulus Jadual Data sebagai UDTT:

SqlParameter pList = new SqlParameter("@list", SqlDbType.Structured);
pList.TypeName = "dbo.StringList";
pList.Value = table;
Salin selepas log masuk

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());
        }
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan