Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Lulus Senarai Rentetan ke Prosedur Tersimpan Pelayan SQL dalam C#?

Bagaimana untuk Lulus Senarai Rentetan ke Prosedur Tersimpan Pelayan SQL dalam C#?

Susan Sarandon
Susan Sarandonasal
2025-01-13 10:21:43231semak imbas

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

Meluluskan Senarai Rentetan kepada Prosedur Tersimpan Pelayan SQL daripada C#

Panduan ini menunjukkan cara untuk menghantar senarai rentetan sebagai parameter kepada prosedur tersimpan SQL Server daripada aplikasi C# anda. Kaedah ini menggunakan Jenis Jadual Ditakrifkan Pengguna (UDTT), sesuai untuk SQL Server 2008 dan versi yang lebih baru.

Mentakrifkan Jenis Jadual Ditakrifkan Pengguna (UDTT)

Pertama, buat UDTT dalam SQL Server untuk mewakili senarai rentetan anda:

<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);</code>

Mengubah suai Prosedur Tersimpan

Seterusnya, ubah suai prosedur tersimpan anda untuk menerima UDTT sebagai input:

<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- Process the string list
    SELECT l.Item FROM @list l;
END</code>

Pelaksanaan C#

Berikut ialah cara menggunakan UDTT dalam kod C# anda:

<code class="language-csharp">using (SqlConnection con = new SqlConnection(connstring))
{
    con.Open();

    using (SqlCommand cmd = new SqlCommand("sp_UseStringList", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@list", CreateStringListTable(new List<string> { "Apple", "Banana", "Orange" }));

        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                // Process each string from the reader
                string item = reader["Item"].ToString();
                Console.WriteLine(item);
            }
        }
    }
}


//Helper function to create the DataTable
private DataTable CreateStringListTable(List<string> stringList)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("Item", typeof(string));
    foreach (string str in stringList)
    {
        dt.Rows.Add(str);
    }
    return dt;
}</code>

Melaksanakan Prosedur Tersimpan (Contoh SQL)

Untuk tujuan ujian, anda boleh melaksanakan prosedur tersimpan terus dalam SQL Server Management Studio (SSMS) seperti ini:

<code class="language-sql">DECLARE @list AS StringList;

INSERT INTO @list VALUES ('Apple');
INSERT INTO @list VALUES ('Banana');
INSERT INTO @list VALUES ('Orange');

EXEC sp_UseStringList @list;</code>

Pendekatan ini menawarkan cara yang mantap dan cekap untuk mengendalikan senarai rentetan apabila berinteraksi dengan prosedur tersimpan SQL Server daripada aplikasi C# anda. Penggunaan UDTT memastikan integriti data dan meningkatkan prestasi berbanding kaedah lain.

Atas ialah kandungan terperinci Bagaimana untuk Lulus Senarai Rentetan ke Prosedur Tersimpan Pelayan SQL dalam 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