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
Libérer: 2025-01-13 10:21:43
original
306 Les gens l'ont consulté

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 :

CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);
Copier après la connexion

Modification de la procédure stockée

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

CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- Process the string list
    SELECT l.Item FROM @list l;
END
Copier après la connexion

Implémentation C#

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

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

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 :

DECLARE @list AS StringList;

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

EXEC sp_UseStringList @list;
Copier après la connexion

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