Maison > base de données > tutoriel mysql > Comment résoudre l'exception SQL « Il existe déjà un DataReader ouvert... » ?

Comment résoudre l'exception SQL « Il existe déjà un DataReader ouvert... » ?

Linda Hamilton
Libérer: 2024-12-04 19:54:11
original
256 Les gens l'ont consulté

How to Resolve the

Exception SQL : "Il existe déjà un DataReader ouvert associé à cette connexion qui doit être fermé en premier"

Cette exception se produit lorsqu'un DataReader est toujours ouvert lors de la tentative d'exécution d'une autre commande SQL sur la même connexion. Voici comment résoudre le problème en fonction du code donné :

Dans votre code, vous ouvrez un DataReader à l'aide de la méthode ExecuteReader(), puis tentez d'exécuter une autre commande à l'aide de ExecuteNonQuery(). Cela n'est pas autorisé car le DataReader détient un verrou sur la connexion. Pour résoudre ce problème, fermez le DataReader avant d'exécuter des commandes supplémentaires.

SQL = "Select * from tblProduct";

//Create Connection/Command/MySQLDataReader
MySqlConnection myConnection = new MySqlConnection(cf.GetConnectionString());
myConnection.Open();
MySqlCommand myCommand = new MySqlCommand(SQL, myConnection);
MySqlDataReader myReader = myCommand.ExecuteReader();
myCommand.Dispose();

if (myReader.HasRows)
{
    int i = 0;
    // Always call Read before accessing data.
    while (myReader.Read())
    {
        if (myReader["frProductid"].ToString() == "") //there is no productid exist for this item
        {
            strInsertSQL = "Insert Into tblProduct_temp (Productid) Values('this istest') ";
            MySqlCommand cmdInserttblProductFrance = new MySqlCommand(strInsertSQL, myConnection);
            
            // Close the DataReader before executing the new command
            myReader.Close();
            
            cmdInserttblProductFrance.ExecuteNonQuery(); // Now this will execute successfully
        }
    }
}
Copier après la connexion

Après la fermeture du DataReader, vous pouvez exécuter la commande cmdInserttblProductFrance sans rencontrer le message "Il existe déjà un DataReader ouvert associé à cette connexion qui doit être fermé en premier" exception.

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