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 } } }
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!