Heim >Datenbank >MySQL-Tutorial >Wie übergebe ich eine Liste von Zeichenfolgen an eine gespeicherte SQL Server-Prozedur in C#?

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

Susan Sarandon
Susan SarandonOriginal
2025-01-13 10:21:43231Durchsuche

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

Übergabe einer Liste von Zeichenfolgen an eine gespeicherte SQL Server-Prozedur von C#

Diese Anleitung zeigt, wie Sie eine Liste von Zeichenfolgen als Parameter aus Ihrer C#-Anwendung an eine gespeicherte SQL Server-Prozedur übergeben. Diese Methode verwendet einen benutzerdefinierten Tabellentyp (UDTT), der für SQL Server 2008 und spätere Versionen geeignet ist.

Definieren des benutzerdefinierten Tabellentyps (UDTT)

Erstellen Sie zunächst eine UDTT in SQL Server, um Ihre String-Liste darzustellen:

<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);</code>

Ändern der gespeicherten Prozedur

Als nächstes ändern Sie Ihre gespeicherte Prozedur, um die UDTT als Eingabe zu akzeptieren:

<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- Process the string list
    SELECT l.Item FROM @list l;
END</code>

C#-Implementierung

So verwenden Sie UDTT in Ihrem C#-Code:

<code class="language-csharp">using (SqlConnection con = new SqlConnection(connstring))
{
    con.Open();

    using (SqlCommand cmd = new SqlCommand("sp_UseStringList", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@list", CreateStringListTable(new List<string> { "Apple", "Banana", "Orange" }));

        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                // Process each string from the reader
                string item = reader["Item"].ToString();
                Console.WriteLine(item);
            }
        }
    }
}


//Helper function to create the DataTable
private DataTable CreateStringListTable(List<string> stringList)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("Item", typeof(string));
    foreach (string str in stringList)
    {
        dt.Rows.Add(str);
    }
    return dt;
}</code>

Ausführen der gespeicherten Prozedur (SQL-Beispiel)

Zu Testzwecken können Sie die gespeicherte Prozedur wie folgt direkt in SQL Server Management Studio (SSMS) ausführen:

<code class="language-sql">DECLARE @list AS StringList;

INSERT INTO @list VALUES ('Apple');
INSERT INTO @list VALUES ('Banana');
INSERT INTO @list VALUES ('Orange');

EXEC sp_UseStringList @list;</code>

Dieser Ansatz bietet eine robuste und effiziente Möglichkeit, Listen von Zeichenfolgen zu verarbeiten, wenn Sie mit gespeicherten SQL Server-Prozeduren Ihrer C#-Anwendungen interagieren. Die Verwendung eines UDTT gewährleistet die Datenintegrität und verbessert die Leistung im Vergleich zu anderen Methoden.

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