Maison >développement back-end >C++ >Comment puis-je transmettre efficacement une liste de chaînes de C# à une procédure stockée SQL Server ?

Comment puis-je transmettre efficacement une liste de chaînes de C# à une procédure stockée SQL Server ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 22:35:40798parcourir

How Can I Efficiently Pass a List of Strings from C# to a SQL Server Stored Procedure?

C# SQL Server : Passer une liste à une procédure stockée

En C#, il est possible d'appeler une procédure stockée SQL Server via du code . Cependant, transmettre une liste de chaînes n’est pas simple. Cet article explore la méthode alternative consistant à utiliser un type de table défini par l'utilisateur (UDT) à la place.

Création d'un type de table défini par l'utilisateur (UDT)

SQL Server 2008 a introduit les UDT , qui fournissent un moyen structuré de transmettre des types de données complexes aux procédures stockées. Pour créer un UDT pour une liste de chaînes :

CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);

Modification de la procédure stockée

Pour accepter le paramètre UDT, la procédure stockée doit être modifiée comme suit :

CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- Just return the items we passed in
    SELECT l.Item FROM @list l;
END

Passer la liste depuis C# Code

Enfin, voici comment transmettre la liste à partir du code C# :

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());
        }
    }
}

Conclusion

L'utilisation d'un UDT est un moyen efficace moyen de transmettre une liste de chaînes à une procédure stockée SQL Server à partir du code C#. En suivant les étapes décrites ci-dessus, les développeurs peuvent facilement gérer des listes de chaînes dynamiques et volumineuses dans leurs interactions de base de données.

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