Maison >base de données >tutoriel mysql >Comment transmettre une liste de chaînes à une procédure stockée SQL Server en C# ?

Comment transmettre une liste de chaînes à une procédure stockée SQL Server en C# ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-13 10:21:43231parcourir

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

Passer une liste de chaînes à une procédure stockée SQL Server à partir de C#

Ce guide montre comment transmettre une liste de chaînes en tant que paramètre à une procédure stockée SQL Server à partir de votre application C#. Cette méthode utilise un type de table défini par l'utilisateur (UDTT), adapté à SQL Server 2008 et versions ultérieures.

Définition du type de table défini par l'utilisateur (UDTT)

Tout d'abord, créez un UDTT dans SQL Server pour représenter votre liste de chaînes :

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

Modification de la procédure stockée

Ensuite, modifiez votre procédure stockée pour accepter l'UDTT en entrée :

<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>

Implémentation C#

Voici comment utiliser l'UDTT dans votre code C# :

<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>

Exécuter la procédure stockée (exemple SQL)

À des fins de tests, vous pouvez exécuter la procédure stockée directement dans SQL Server Management Studio (SSMS) comme ceci :

<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>

Cette approche offre un moyen robuste et efficace de gérer des listes de chaînes lors de l'interaction avec les procédures stockées SQL Server à partir de vos applications C#. L'utilisation d'un UDTT garantit l'intégrité des données et améliore les performances par rapport à d'autres méthodes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn