Maison > développement back-end > C++ > Comment puis-je insérer efficacement plusieurs lignes paramétrées dans une base de données SQL Server à partir de C# ?

Comment puis-je insérer efficacement plusieurs lignes paramétrées dans une base de données SQL Server à partir de C# ?

Linda Hamilton
Libérer: 2025-01-05 00:47:40
original
209 Les gens l'ont consulté

How Can I Efficiently Insert Multiple Parameterized Rows into a SQL Server Database from C#?

Insertion de plusieurs lignes paramétrées dans une base de données en C

Lorsque vous travaillez avec de vastes ensembles de données ou des mises à jour fréquentes, il est crucial d'optimiser les opérations de la base de données. L'insertion efficace de plusieurs lignes dans une base de données en C# pose un défi important, surtout si les données proviennent de sources Web et doivent être paramétrées à des fins de sécurité.

Limites de l'approche actuelle

Le code fourni L'extrait utilise une boucle pour exécuter des instructions d'insertion individuelles pour chaque élément de données :

foreach(string data in Scraper){
    // ...
    Command.executeNonQuery(); 
    conn.close();
}
Copier après la connexion

Cependant, cette approche itérative est inefficace et peut conduire à des goulots d'étranglement en termes de performances avec des ensembles de données plus volumineux.

Solution optimisée utilisant des paramètres à valeur de table

Pour une insertion de données plus rapide et plus efficace dans SQL Server 2008 et versions ultérieures, les paramètres à valeur de table offrent une solution convaincante. En définissant un type de table défini par l'utilisateur et en l'exploitant dans une procédure stockée, vous pouvez insérer plusieurs lignes en une seule opération.

Étape 1 : Créer un type de table défini par l'utilisateur

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

Étape 2 : Créer une procédure stockée avec une valeur de table Paramètre

CREATE PROCEDURE MyProcedure
(
    @MyTable dbo.MyTableType READONLY -- NOTE: table valued parameters must be Readonly!
)
AS

INSERT INTO MyTable (Col1, Col2)
SELECT Col1, Col2 
FROM @MyTable
Copier après la connexion

Étape 3 : Exécuter une procédure stockée à partir de C#

DataTable dt = new DataTable();
// Fill data table with values...

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

Avantages de l'utilisation de paramètres valorisés par une table

  • Trafic réseau réduit : Au lieu d'envoyer plusieurs instructions INSERT, une seule La requête est envoyée, contenant un lot de lignes.
  • Performances améliorées :Le moteur de base de données optimise le processus d'insertion, ce qui entraîne des temps d'exécution plus rapides.
  • Sécurité améliorée : Les requêtes paramétrées aident à prévenir les attaques par injection SQL, car les valeurs des données sont transmises séparément de la requête.

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