J'ai 2 SqlCommand, l'un d'eux est imbriqué. Pourquoi cela ne me permet pas d'émettre la deuxième SqlCommand (j'utilise une commande SQLCommand séparée)? Il donne une erreur "Il y a déjà un DataReader ouvert associé à cette commande qui doit être fermé en premier." . Si j'utilise un SqlConnection séparé, ça va.Ne pas autoriser SQLCommand imbriqué?
SqlCommand cmd = new SqlCommand(qry, cn);
SqlDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
....
try
{
SqlCommand cmd2 = new SqlCommand(qry2, cn);
cmd2.ExecuteNonQuery();
}
catch (Exception e)
{
// I get this error here
// System.Data; There is already an open DataReader associated with this Command which must be closed first.
}
}
Vous avez besoin d'une instance de connexion supplémentaire pour exécuter une autre requête avec la même chaîne de connexion pour les requêtes simultanées. Comme il peut être impossible d'arrêter 'DataReader' lors de l'exécution d'une autre requête, pensez à insérer le contenu' DataReader' dans un 'DataTable', fermez la première connexion et rouvrez-le lors de l'itération du contenu' DataTable'. –