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

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

DDD
Lepaskan: 2025-01-13 09:22:43
asal
998 orang telah melayarinya

How to Pass a C# String List to a SQL Server Stored Procedure?

Meluluskan senarai ke prosedur tersimpan SQL Server dalam C#

Soalan:

Anda perlu menghantar senarai rentetan daripada kod C# anda kepada prosedur tersimpan SQL Server. Walau bagaimanapun, senarai ini adalah dinamik dan mengandungi beratus-ratus item.

Penyelesaian:

Gunakan jenis jadual takrif pengguna (UDTT)

SQL Server 2008 dan kemudiannya menawarkan Jenis Jadual Ditakrifkan Pengguna (UDTT), membolehkan anda mencipta jenis data tersuai untuk digunakan dalam prosedur tersimpan. Sila ikut langkah berikut:

  1. Buat UDTT: Cipta UDTT baharu menggunakan pernyataan SQL yang serupa dengan yang berikut:
<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);</code>
Salin selepas log masuk
  1. Ubah suai prosedur tersimpan: Ubah suai prosedur tersimpan untuk menerima UDTT sebagai parameter:
<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- 只返回我们传入的项目
    SELECT l.Item FROM @list l;
END</code>
Salin selepas log masuk
  1. Isi Jadual Data dalam C#: Cipta Jadual Data untuk menyimpan senarai rentetan:
<code class="language-csharp">using (var table = new DataTable())
{
    table.Columns.Add("Item", typeof(string));

    for (int i = 0; i < 1000; i++) // 假设列表包含1000个项目
    {
        table.Rows.Add("Item " + i);
    }
}</code>
Salin selepas log masuk
  1. Cipta SqlParameter: Cipta SqlParameter baharu menggunakan jenis UDTT:
<code class="language-csharp">var pList = new SqlParameter("@list", SqlDbType.Structured);
pList.TypeName = "dbo.StringList";
pList.Value = table;</code>
Salin selepas log masuk
  1. Laksanakan prosedur tersimpan: Laksanakan prosedur tersimpan dan dapatkan semula keputusan:
<code class="language-csharp">using (var con = new SqlConnection(connstring))
{
    con.Open();

    using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con))
    {
        cmd.Parameters.Add(pList);

        using (var dr = cmd.ExecuteReader())
        {
            while (dr.Read())
                Console.WriteLine(dr["Item"].ToString());
        }
    }
}</code>
Salin selepas log masuk

Ingat untuk menggantikan connstring dengan rentetan sambungan anda sendiri. Contoh kod ini menganggap senarai anda mengandungi 1000 item, anda perlu melaraskan gelung berdasarkan saiz senarai sebenar. Selain itu, pastikan contoh SQL Server anda telah mendayakan penggunaan parameter READONLY.

Atas ialah kandungan terperinci Bagaimana untuk Lulus Senarai Rentetan C# ke Prosedur Tersimpan Pelayan SQL?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan