ホームページ >バックエンド開発 >C++ >C# から SQL Server ストアド プロシージャに文字列のリストを効率的に渡すにはどうすればよいですか?

C# から SQL Server ストアド プロシージャに文字列のリストを効率的に渡すにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 22:35:40769ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

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