Maison > développement back-end > C++ > Pourquoi « ExecuteNonQuery() » échoue-t-il avec une erreur « Propriété de connexion non initialisée » ?

Pourquoi « ExecuteNonQuery() » échoue-t-il avec une erreur « Propriété de connexion non initialisée » ?

Mary-Kate Olsen
Libérer: 2025-01-03 21:49:39
original
745 Les gens l'ont consulté

Why Does `ExecuteNonQuery()` Fail with an

ExecuteNonQuery : Échec dû à une propriété de connexion non initialisée

Question :

Lors de la tentative d'exécution d'une commande SQL à l'aide de ExecuteNonQuery( ), une erreur est rencontrée indiquant que la propriété de connexion n'a pas été initialisée. Quelle pourrait être la cause de ce problème ?

Réponse :

Le message d'erreur « ExecuteNonQuery : la propriété Connection n'a pas été initialisée » suggère que l'objet SqlConnection n'a pas été correctement attribué à l'objet SqlCommand. Pour résoudre ce problème, la propriété de connexion de SqlCommand doit être explicitement définie.

Solution :

Une méthode pour attribuer la connexion consiste à utiliser le constructeur de la classe SqlCommand. :

cmd.InsertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ", connection1);
Copier après la connexion

Alternativement, la propriété de connexion peut être attribuée directement :

cmd.InsertCommand.Connection = connection1;
Copier après la connexion

Considérations supplémentaires :

  • Instruction d'utilisation : Il est recommandé d'utiliser l'instruction using pour les objets implémentant IDisposable , tel que SqlConnection, pour garantir un nettoyage correct des ressources et la fermeture de la connexion.
  • Connexion Pooling : Créer et fermer des connexions à plusieurs reprises (par exemple, pour chaque entrée de la boucle foreach) est une surcharge inutile. Au lieu de cela, envisagez de créer et d'ouvrir la connexion une fois en dehors de la boucle et de la fermer uniquement une fois la boucle terminée.

Exemple de code :

using (var connection1 = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True"))
using (var cmd = new SqlDataAdapter())
using (var insertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) "))
{
    insertCommand.Connection = connection1;
    cmd.InsertCommand = insertCommand;

    // Other code...

    connection1.Open();
    insertCommand.ExecuteNonQuery();
}
Copier après la connexion

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