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
Freigeben: 2025-01-05 00:53:40
Original
243 Leute haben es durchsucht

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

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

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

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

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

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

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

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!

Quelle:php.cn
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