Maison > développement back-end > C++ > Comment puis-je insérer efficacement plusieurs lignes avec des requêtes paramétrées en C# ?

Comment puis-je insérer efficacement plusieurs lignes avec des requêtes paramétrées en C# ?

DDD
Libérer: 2025-01-01 04:54:10
original
513 Les gens l'ont consulté

How Can I Efficiently Insert Multiple Rows with Parameterized Queries in C#?

Insertion de plusieurs lignes paramétrées avec une seule requête en C#

Les requêtes paramétrées permettent aux développeurs d'exécuter des instructions SQL sans coder en dur les valeurs, empêchant ainsi SQL attaques par injection et amélioration des performances. L'insertion de plusieurs lignes avec des valeurs paramétrées peut être efficace, en particulier lorsque vous utilisez un plus grand nombre de lignes.

Dans le code fourni, chaque ligne est insérée individuellement, ce qui peut être lent. Pour résoudre ce problème, vous pouvez tirer parti des paramètres table avec SQL Server 2008 et versions ultérieures.

Création d'un paramètre table

Tout d'abord, créez un paramètre utilisateur. type de table défini qui définit les colonnes de vos données :

CREATE TYPE MyTableType AS TABLE
(
    Col1 int,
    Col2 varchar(20)
)
Copier après la connexion

Création d'un fichier stocké Procédure

Ensuite, créez une procédure stockée qui accepte le paramètre table :

CREATE PROCEDURE MyProcedure
(
    @MyTable dbo.MyTableType READONLY 
)
AS

INSERT INTO MyTable (Col1, Col2)
SELECT Col1, Col2 
FROM @MyTable

GO
Copier après la connexion

Notez que le paramètre @MyTable est marqué comme READONLY car les paramètres table doivent être en lecture seule.

Exécuter la procédure stockée avec un DataTable

Enfin, exécutez la procédure stockée à partir de C# à l'aide d'un DataTable :

DataTable dt = new DataTable();
dt.Columns.Add("Col1", typeof(int));
dt.Columns.Add("Col2", typeof(string));

// Fill your data table here

using (var con = new SqlConnection("ConnectionString"))
{
    using(var cmd = new SqlCommand("MyProcedure", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@MyTable", SqlDbType.Structured).Value = dt;
        con.Open();
        cmd.ExecuteNonQuery();
    }
}
Copier après la connexion

En utilisant des paramètres table, vous pouvez insérer plusieurs lignes avec une seule requête paramétrée, de manière significative améliorer les performances.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal