首頁 > 資料庫 > mysql教程 > 如何有效地將字串清單從 C# 傳遞到 SQL Server 預存程序?

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

Mary-Kate Olsen
發布: 2025-01-13 10:50:42
原創
327 人瀏覽過

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

C# 和 SQL Server:高效處理預存程序中的字串清單

透過 C# 與 SQL Server 預存程序互動時的常見挑戰涉及傳遞動態字串值清單。 本文示範了使用使用者定義表類型 (UDTT) 的強大解決方案。

問題:動態字串清單

想像一個預存程序需要根據可變長度的字串列表過濾結果。 直接傳遞這個清單可能會出現問題。

解決方案:使用者定義的表格類型 (UDTT)

SQL Server 2008 及更高版本提供 UDTT 作為一種優雅的解決方案。 我們將建立一個名為 StringList 的 UDTT 來封裝我們的字串集合。

建立預存程序

此預存程序使用 StringList 類型:

<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- Retrieve and return items from the input list
    SELECT l.Item FROM @list l;
END</code>
登入後複製

C# 實作

下面的 C# 程式碼示範如何使用此預存程序:

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

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

            // Add sample data – replace with your actual list
            for (int i = 0; i < 10; i++)
            {
                table.Rows.Add("String" + i);
            }

            // Add the DataTable as a parameter to the command.
            SqlParameter tvpParam = cmd.Parameters.AddWithValue("@list", table);
            tvpParam.SqlDbType = SqlDbType.Structured;
            tvpParam.TypeName = "dbo.StringList";

            // Execute the command.
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                // Process the results
                while (reader.Read())
                {
                    Console.WriteLine(reader["Item"].ToString());
                }
            }
        }
    }
}</code>
登入後複製

SSMS 執行範例

對於在 SQL Server Management Studio (SSMS) 中進行測試:

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

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

EXEC sp_UseStringList @list;</code>
登入後複製

此方法提供了一種乾淨、高效的方法,用於將字串清單從 C# 傳遞到 SQL Server 預存程序,利用 UDTT 的強大功能進行結構化資料傳輸。 如果您更改了 "dbo.StringList",請記住將其替換為正確的架構和名稱。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板