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
Freigeben: 2025-01-04 22:35:40
Original
857 Leute haben es durchsucht

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
);
Nach dem Login kopieren

Ä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
Nach dem Login kopieren

Ü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());
        }
    }
}
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage