Maison >développement back-end >C++ >Pourquoi mon ExecuteNonQuery renvoie-t-il « La propriété de connexion n'a pas été initialisée » ?

Pourquoi mon ExecuteNonQuery renvoie-t-il « La propriété de connexion n'a pas été initialisée » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-03 15:49:401102parcourir

Why Does My ExecuteNonQuery Throw

ExecuteNonQuery : la propriété de connexion n'a pas été initialisée

L'erreur "ExecuteNonQuery : la propriété de connexion n'a pas été initialisée" indique une connexion manquante entre le SqlCommand et la base de données. Pour résoudre ce problème, suivez ces étapes :

1. Attribuer une connexion à SqlCommand

Dans le code fourni, la connexion établie dans la ligne connection1.Open(); n’est pas affecté au InsertCommand utilisé dans la méthode ExecuteNonQuery. Pour résoudre ce problème, utilisez le constructeur ou la propriété pour attribuer la connexion à InsertCommand :

cmd.InsertCommand = new SqlCommand("...");
cmd.InsertCommand.Connection = connection1;

2. Utiliser l'instruction Using pour l'élimination des ressources

Il est recommandé d'utiliser l'instruction using pour supprimer automatiquement les objets IDisposable comme SqlConnection, qui ferme également la connexion à la fin du bloc d'instructions :

using (var connection1 = new SqlConnection(...))
{
    using (var cmd = new SqlDataAdapter())
    {
        using (var insertCommand = new SqlCommand(...))
        {
            // ...
            connection1.Open();
        }
    }
}

3. Optimiser la gestion des connexions

La création d'une nouvelle connexion pour chaque entrée de la boucle foreach n'est pas nécessaire. Vous pouvez optimiser cela en créant la connexion et les adaptateurs en dehors de la boucle et en les réutilisant :

var connection1 = new SqlConnection(...);
var cmd = new SqlDataAdapter();
var insertCommand = new SqlCommand(...);
insertCommand.Connection = connection1;

...

connection1.Open();
// ...

// No need to close the connection explicitly

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!

Déclaration:
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