Bonjour,
J'ai un problème avec l'utilisation deux SQLDataReader, car au deuxième ExecuteReader(), j'ai cette erreur :
«System.InvalidOperationException: Un DataReader associé à cette commande est déjà ouvert. Il doit d'abord être fermé.».
J'ai pu voir que c'est parce qu'on ne peut utiliser deux reader en même temps, mais dans ma situation, je ne peux fermer mon reader principal.
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 private void CreateTableau() { TableCell CelluleDonneeProduit; TableRow RowDonneeProduit; myConn.Open(); SqlCommand cmd = myConn.CreateCommand(); cmd.CommandText = "SELECT DISTINCT aa, bb, cc, dd, ee, ff FROM tabcd"; SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { for (int j = 0; j <= 5; j++) { CelluleDonneeProduit = new TableCell(); else if (j == 2) { TexteInfoBulle = reader.GetString(5) + "<br />" + AfficheCommentaire(reader.GetString(1)); ... } RowDonneeProduit.Cells.Add(CelluleDonneeProduit); Row.CssClass = CssClass; tableau.Rows.Add(Row); } myConn.Close(); }AfficheCommentaire retourne 0 ou plusieurs commentaires que l'on concatène pour ensuite envoyer le résultat dans le tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 private string AfficheCommentaire(string CodeItem) { string Texte = ""; SqlCommand cmd = myConn.CreateCommand(); SqlDataReader reader; cmd.CommandText = "SELECT DISTINCT Comm FROM tcomm WHERE GG=CodeItem"; reader = cmd.ExecuteReader(); while (reader.Read()) { Texte += "<br />" + reader.GetString(0); } return Texte; }
Je voudrais savoir s'il y a un moyen d'exécuter ces deux reader sans fermer la première, car il doit continuer à peupler le tableau.
Partager