yanis7518
Messages postés283Date d'inscriptionmercredi 7 décembre 2005StatutMembreDernière intervention 9 juillet 2010
-
13 oct. 2006 à 12:20
yanis7518
Messages postés283Date d'inscriptionmercredi 7 décembre 2005StatutMembreDernière intervention 9 juillet 2010
-
13 oct. 2006 à 13:55
salut a toutes et a tous!!!!!!!
Voila je souhaiterais faire un update sur une table sqlserver. les données pour la mise a jour provienne d'une autre table donc je fai d'abord un select sur la table1 et pour chaque valeur de mon select je fai un update sur la table 2. Lorsque je lance mon appli j'ai un message d'erreur qui me dit que je ne peux pas faire d'update car un datareader est deja ouvert et ke je dois le fermé.
Voila mon code
if (cn != null)
{
select = "SELECT id, info FROM table1";
SqlCommand cmd = new SqlCommand(select, cn);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{ update "UPDATE table2 SET champs1 " + reader[1].ToString()
+ " WHERE champs2 = " + reader[0].ToString().Replace("'","''");
SqlCommand cmd2 = new SqlCommand(update, cn);
int affectedrows = cmd2.ExecuteNonQuery();
}
}
}
cn.Close();
cn.Dispose();
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 13 oct. 2006 à 13:02
Salut,
En fait, il faut simplement que tu ouvres une autre connexion.
Autrement :
-Utilise des requetes paramétrées plutot que de construire ta requete avec des concaténations
-Libère ta connexion dans une clause finally (et donc entoure le reste de ton code par un try/catch)
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 13 oct. 2006 à 13:46
En fait, une fois la fin du using atteinte, la méthode Dispose de l'objet déclarée dans la parenthèse du using est automatiquement appelée (il faut donc que cet objet implémente IDisposable).
Mx
MVP C#
Vous n’avez pas trouvé la réponse que vous recherchez ?