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

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

Susan Sarandon
Libérer: 2025-01-05 00:53:40
original
242 Les gens l'ont consulté

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

Passer une liste de chaînes à une procédure stockée en C#

Lors de l'appel d'une procédure stockée SQL Server à partir de C#, transmettre une liste de chaînes en tant que paramètre peut être difficile. Cependant, il existe une solution utilisant la fonctionnalité UDTT (User Defined Table Type) dans SQL Server 2008 et versions ultérieures.

Création de l'UDTT

Tout d'abord, créez un UDTT pour représentent la liste des chaînes :

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

Modifier le stocké Procédure

Dans la procédure stockée, déclarer l'UDTT en paramètre :

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

Remplir l'UDTT en C#

En C# , créez un DataTable et ajoutez une colonne de type string nommée "Item":

using System.Data;
using System.Data.SqlClient;

...

DataTable table = new DataTable();
table.Columns.Add("Item", typeof(string));
Copier après la connexion

Remplissez le DataTable avec la liste des chaînes :

for (int i = 0; i < 10; i++)
    table.Rows.Add("Item " + i.ToString());
Copier après la connexion

Créer un SqlParameter pour transmettre le DataTable en tant qu'UDTT :

SqlParameter pList = new SqlParameter("@list", SqlDbType.Structured);
pList.TypeName = "dbo.StringList";
pList.Value = table;
Copier après la connexion

Passer la liste à la procédure stockée

Ajoutez le SqlParameter au SqlCommand et exécutez le procédure :

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

Cette approche vous permet de transmettre une liste de chaînes à une procédure stockée dans un format structuré, permettant des requêtes complexes.

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