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

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

DDD
リリース: 2025-01-13 09:22:43
オリジナル
998 人が閲覧しました

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

C# で SQL Server ストアド プロシージャにリストを渡す

質問:

文字列のリストを C# コードから SQL Server ストアド プロシージャに渡す必要があります。ただし、このリストは動的であり、数百の項目が含まれています。

解決策:

ユーザー定義のテーブル タイプ (UDTT) を使用する

SQL Server 2008 以降ではユーザー定義テーブル型 (UDTT) が提供されており、ストアド プロシージャで使用するカスタム データ型を作成できます。次の手順に従ってください:

  1. UDTT の作成: 次のような SQL ステートメントを使用して、新しい UDTT を作成します:
<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);</code>
ログイン後にコピー
  1. ストアド プロシージャを変更します: パラメータとして UDTT を受け取るようにストアド プロシージャを変更します:
<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- 只返回我们传入的项目
    SELECT l.Item FROM @list l;
END</code>
ログイン後にコピー
  1. C# で DataTable にデータを設定します: 文字列のリストを保持する DataTable を作成します:
<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>
ログイン後にコピー
  1. SqlParameter の作成: UDTT 型を使用して新しい SqlParameter を作成:
<code class="language-csharp">var pList = new SqlParameter("@list", SqlDbType.Structured);
pList.TypeName = "dbo.StringList";
pList.Value = table;</code>
ログイン後にコピー
  1. ストアド プロシージャを実行します: ストアド プロシージャを実行して結果を取得します:
<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>
ログイン後にコピー

connstring を独自の接続文字列に置き換えてください。 このコード例では、リストに 1000 個の項目が含まれていることを前提としているため、実際のリストのサイズに基づいてループを調整する必要があります。 さらに、SQL Server インスタンスで READONLY パラメーターの使用が有効になっていることを確認してください。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート