Heim >Backend-Entwicklung >C++ >Wie kann ich eine Liste von Zeichenfolgen effizient von C# an eine gespeicherte SQL Server-Prozedur übergeben?
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!