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

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

Susan Sarandon
Susan SarandonOriginal
2025-01-04 22:35:40773Durchsuche

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

C# SQL Server: Übergeben einer Liste an eine gespeicherte Prozedur

In C# ist es möglich, eine gespeicherte SQL Server-Prozedur über Code aufzurufen . Allerdings ist die Übergabe einer Liste von Zeichenfolgen nicht einfach. In diesem Artikel wird die alternative Methode zur Verwendung eines benutzerdefinierten Tabellentyps (UDT) untersucht.

Erstellen eines benutzerdefinierten Tabellentyps (UDT)

Mit SQL Server 2008 wurden UDTs eingeführt , die eine strukturierte Möglichkeit bieten, komplexe Datentypen an gespeicherte Prozeduren zu übergeben. So erstellen Sie einen UDT für eine Liste von Zeichenfolgen:

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

Ändern der gespeicherten Prozedur

Um den UDT-Parameter zu akzeptieren, muss die gespeicherte Prozedur wie folgt geändert werden :

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

Übergabe der Liste aus C# Code

Abschließend erfahren Sie hier, wie Sie die Liste aus C#-Code übergeben:

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());
        }
    }
}

Fazit

Die Verwendung eines UDT ist effektiv Möglichkeit, eine Liste von Zeichenfolgen aus C#-Code an eine gespeicherte SQL Server-Prozedur zu übergeben. Durch Befolgen der oben beschriebenen Schritte können Entwickler problemlos mit dynamischen und großen Zeichenfolgenlisten in ihren Datenbankinteraktionen umgehen.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Liste von Zeichenfolgen effizient von C# an eine gespeicherte SQL Server-Prozedur übergeben?. 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