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
Libérer: 2025-01-12 06:02:44
original
353 Les gens l'ont consulté

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

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

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

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

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!

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