ホームページ >データベース >mysql チュートリアル >C# で文字列のリストを SQL Server ストアド プロシージャに渡す方法

C# で文字列のリストを SQL Server ストアド プロシージャに渡す方法

Susan Sarandon
Susan Sarandonオリジナル
2025-01-13 10:21:43231ブラウズ

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

C# から SQL Server ストアド プロシージャに文字列のリストを渡す

このガイドでは、C# アプリケーションから文字列のリストをパラメーターとして SQL Server ストアド プロシージャに渡す方法を説明します。 この方法では、SQL Server 2008 以降のバージョンに適したユーザー定義テーブル タイプ (UDTT) が利用されます。

ユーザー定義テーブルタイプ (UDTT) の定義

まず、SQL Server で文字列リストを表す UDTT を作成します。

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

ストアド プロシージャの変更

次に、UDTT を入力として受け入れるようにストアド プロシージャを変更します。

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

C# の実装

C# コード内で UDTT を使用する方法は次のとおりです。

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

ストアド プロシージャの実行 (SQL 例)

テストの目的で、次のように SQL Server Management Studio (SSMS) でストアド プロシージャを直接実行できます。

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

このアプローチは、C# アプリケーションから SQL Server ストアド プロシージャを操作するときに文字列のリストを処理するための堅牢かつ効率的な方法を提供します。 UDTT を使用すると、データの整合性が保証され、他の方法と比較してパフォーマンスが向上します。

以上がC# で文字列のリストを SQL Server ストアド プロシージャに渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。