Heim >Backend-Entwicklung >C++ >Wie übergebe ich eine Liste von Zeichenfolgen von C# an eine gespeicherte SQL Server-Prozedur?

Wie übergebe ich eine Liste von Zeichenfolgen von C# an eine gespeicherte SQL Server-Prozedur?

Susan Sarandon
Susan SarandonOriginal
2025-01-05 00:53:40251Durchsuche

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

Übergabe einer Liste von Zeichenfolgen an eine gespeicherte Prozedur in C#

Übergabe einer Liste von Zeichenfolgen beim Aufrufen einer gespeicherten SQL Server-Prozedur aus C# als Parameter kann eine Herausforderung sein. Es gibt jedoch eine Lösung, die die Funktion „User Defined Table Type“ (UDTT) in SQL Server 2008 und höher verwendet.

Erstellen der UDTT

Erstellen Sie zunächst eine UDTT für stellt die Liste der Zeichenfolgen dar:

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

Ändern des Gespeicherten Prozedur

Deklarieren Sie in der gespeicherten Prozedur die UDTT als Parameter:

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

Auffüllen der UDTT in C#

In C# , erstellen Sie eine Datentabelle und fügen Sie eine Spalte vom Typ Zeichenfolge mit dem Namen „Item“ hinzu:

using System.Data;
using System.Data.SqlClient;

...

DataTable table = new DataTable();
table.Columns.Add("Item", typeof(string));

Füllen Sie die aus DataTable mit der Liste der Zeichenfolgen:

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

Erstellen Sie einen SqlParameter, um die DataTable als UDTT zu übergeben:

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

Übergeben der Liste an die gespeicherte Prozedur

Fügen Sie den SqlParameter zum SqlCommand hinzu und führen Sie den gespeicherten Befehl aus Prozedur:

using (SqlConnection con = new SqlConnection(connstring))
{
    con.Open();

    using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con))
    {
        cmd.Parameters.Add(pList);

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

Mit diesem Ansatz können Sie eine Liste von Zeichenfolgen in einem strukturierten Format an eine gespeicherte Prozedur übergeben und so komplexe Abfragen ermöglichen.

Das obige ist der detaillierte Inhalt vonWie übergebe ich eine Liste von Zeichenfolgen von C# an eine gespeicherte SQL Server-Prozedur?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn