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
Susan Sarandonasal
2025-01-05 00:53:40251semak imbas

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
);

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!

Kenyataan:
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