Je dois envoyer une liste de commandes à SQL 2008 en utilisant ADO.NET, à exécuter l'une après l'autre. Dois-je créer une nouvelle SQLCommand pour chaque SQL que j'envoie? Ou réutiliser la même SQLCommand et juste modifier la propriété CommandText? Merci, NestorCréation de nouvelles commandes SQLC ou réutilisation de celles-ci
11
A
Répondre
16
SqlLes commandes sont assez légères. Vous êtes sûr d'en créer un nouveau à chaque fois.
Il existe des complications avec les commandes paramétrées où vous devez effacer et réinitialiser tous les paramètres, et à ce stade, créer une nouvelle commande est propre, facile à comprendre et efficace.
En outre, il est généralement possible d'utiliser une nouvelle SqlConnection à chaque fois. La mise en commun automatique des connexions est la «magie» qui rend ce système efficace.
J'utilise ceci:
public void ExecuteQuery(string query)
{
this.ExecuteQuery(query, null);
}
public void ExecuteQuery(string query, Dictionary<string, object> parameters)
{
using (SqlConnection conn = new SqlConnection(this.connectionString))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = query;
if (parameters != null)
{
foreach (string parameter in parameters.Keys)
{
cmd.Parameters.AddWithValue(parameter, parameters[parameter]);
}
}
cmd.ExecuteNonQuery();
}
}
}
Questions connexes
- 1. Création de ressources dans une DLL pour réutilisation, MFC/VC++
- 2. Création de nouvelles lignes modifiables dans une table
- 3. Création de nouvelles fenêtres exécutant des programmes à l'écran
- 4. Réutilisation de IndexSearcher
- 5. Réutilisation de code avec Linq-to-Sql - Création de tables de correspondance 'génériques'
- 6. Création de pages pour éviter les commandes redondantes + identiques
- 7. Réutilisation de l'objet d'automatisation COM Internet Explorer
- 8. Commandes TinyMCE ou API objet?
- 9. Réutilisation de session SSL avec SChannel (Windows)
- 10. Valider aucun chevauchement de routage lors de la création de nouvelles ressources dans Ruby on Rails
- 11. Extension ou ajout de nouvelles classes à l'exécution en Java
- 12. Nouvelles améliorations de vb.net?
- 13. Réutilisation de la sous-vue
- 14. Fermeture de la connexion existante lors de la création de nouvelles connexions TCP
- 15. Réutilisation de l'entrée de variable d'exécution Eclipse
- 16. Problème de réutilisation de la connexion MySQL
- 17. Réutilisation de l'icône de l'application .NET
- 18. Appel de commandes shell depuis Squeak ou Pharo
- 19. Visionneuse d'image - commandes standard de l'interface graphique, ascendante ou quoi?
- 20. réutilisation de la logique d'instruction du commutateur
- 21. Réutilisation d'un PreparedStatement
- 22. Réutilisation du modèle de panneau dans Drupal
- 23. Le principe d'équivalence de réutilisation/libération (REP)
- 24. Réutilisation de StaticResource dans Silverlight 2.0
- 25. Réutilisation de colonnes calculées dans mysql
- 26. Nouvelles langues
- 27. NSMutableArray ajouter de nouvelles méthodes
- 28. Nouvelles fonctionnalités de WPF 4?
- 29. Barre de nouvelles avec jQuery
- 30. réutilisation des objets TableCellEditor
downvoting pour les conseils de fermer et de connexions rouvrir. Faire cela dans un TransactionScope le promouvra immédiatement à une transaction DTC, qui si elle n'est pas nécessaire blesse les performances et peut introduire des bogues si DTC n'est pas correctement configuré. – Andy
@Andy: Pourquoi voter en bas quand j'ai dit "habituellement OK"? La plupart des gens n'auront pas le problème que vous décrivez. –
Ce n'est pas "généralement OK". Il suffit de rechercher sur Internet combien de fois les gens ont été mordus par la promotion DTC depuis que TransactionScope a été introduit. Le conseil habituel est de réutiliser une seule connexion par transaction/unité de travail. – Andy