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
Libérer: 2025-01-04 22:35:40
original
800 Les gens l'ont consulté

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
);
Copier après la connexion

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
Copier après la connexion

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());
        }
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal