Maison >base de données >tutoriel mysql >Comment insérer efficacement plusieurs lignes avec des variables paramétrées en C# à l'aide de paramètres table ?

Comment insérer efficacement plusieurs lignes avec des variables paramétrées en C# à l'aide de paramètres table ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-12 06:02:44375parcourir

How to Efficiently Insert Multiple Rows with Parameterized Variables in C# Using Table-Valued Parameters?

Exploiter les paramètres table pour l'insertion de données en masse en C#

Ce guide montre comment insérer efficacement plusieurs lignes dans une base de données SQL Server (2008 ou version ultérieure) à l'aide d'une seule requête paramétrée en C#. Cette technique, utilisant des paramètres table, améliore considérablement les performances par rapport aux instructions d'insertion individuelles.

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

Commencez par créer un type de table défini par l'utilisateur dans SQL Server pour représenter la structure de données de votre insertion :

<code class="language-sql">CREATE TYPE MyTableType AS TABLE
(
    Col1 int,
    Col2 varchar(20) 
)
GO</code>

Création de procédures stockées

Ensuite, créez une procédure stockée qui accepte ce type de table défini par l'utilisateur comme paramètre :

<code class="language-sql">CREATE PROCEDURE MyProcedure
(
    @MyTable dbo.MyTableType READONLY -- READONLY is crucial for table-valued parameters
)
AS
BEGIN
    INSERT INTO MyTable (Col1, Col2)
    SELECT Col1, Col2 
    FROM @MyTable;
END;
GO</code>

Implémentation C# : table de données et exécution de procédures stockées

Dans votre code C#, construisez un DataTable pour contenir les données que vous souhaitez insérer :

<code class="language-csharp">DataTable dt = new DataTable();
dt.Columns.Add("Col1", typeof(int));
dt.Columns.Add("Col2", typeof(string));

// Populate the DataTable with your data here...  For example:
DataRow row1 = dt.NewRow();
row1["Col1"] = 1;
row1["Col2"] = "Value 1";
dt.Rows.Add(row1);

// ...add more rows as needed...</code>

Enfin, exécutez la procédure stockée en utilisant SqlCommand :

<code class="language-csharp">using (SqlConnection con = new SqlConnection("YourConnectionString"))
{
    using (SqlCommand cmd = new SqlCommand("MyProcedure", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@MyTable", dt); //AddWithValue handles SqlDbType automatically
        con.Open();
        cmd.ExecuteNonQuery();
    }
}</code>

Cette méthode fournit un moyen très efficace d'insérer plusieurs lignes avec des valeurs paramétrées, évitant ainsi les vulnérabilités d'injection SQL et améliorant les performances de la base de données par rapport aux instructions INSERT individuelles. N'oubliez pas de remplacer "YourConnectionString" par votre chaîne de connexion réelle.

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