首頁 >後端開發 >C++ >如何有效地將字串清單從 C# 傳遞到 SQL Server 預存程序?

如何有效地將字串清單從 C# 傳遞到 SQL Server 預存程序?

Susan Sarandon
Susan Sarandon原創
2025-01-04 22:35:40773瀏覽

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

C# SQL Server:將清單傳遞給預存程序

在 C# 中,可以透過程式碼呼叫 SQL Server 預存程序。然而,傳遞字串列表並不簡單。本文探討了使用使用者定義表格類型 (UDT) 的替代方法。

建立使用者定義表格類型(UDT)

SQL Server 2008 引進了UDT ,它提供了一種將複雜資料類型傳遞給預存程序的結構化方法。若要為字串清單建立UDT:

CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);

修改預存程序

要接受UDT 參數,需要如下修改預存程序:

CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- Just return the items we passed in
    SELECT l.Item FROM @list l;
END

從C#傳遞清單代碼

最後,這是如何從C# 程式碼傳遞清單:

using System.Data;

var con = new SqlConnection(connstring);
con.Open();

using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con))
{
    using (var table = new DataTable())
    {
        table.Columns.Add("Item", typeof(string));

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

        var pList = new SqlParameter("@list", SqlDbType.Structured);
        pList.TypeName = "dbo.StringList";
        pList.Value = table;

        cmd.Parameters.Add(pList);

        using (var dr = cmd.ExecuteReader())
        {
            while (dr.Read())
                Console.WriteLine(dr["Item"].ToString());
        }
    }
}

結論

使用UDT 是一種有效的方法將字串清單從C# 程式碼傳遞到SQL Server 預存程序的方法。透過遵循上述步驟,開發人員可以在資料庫互動中輕鬆處理動態和大型字串清單。

以上是如何有效地將字串清單從 C# 傳遞到 SQL Server 預存程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn