Bonjour,
Je suis sur VB2005 C# avec MySQL5.0 et le connecteur MySql net 5.1.4 (dernier)

Mon but est simplement pendant que je parcours la lecture d'une table en lire une autre sans devoir faire une jointure dans ma commande sql.
Je peux aussi ouvrir un deuxième connecteur à ma base de donnée, mais perte de performance lors de l'ouverture d'un deuxième connecteur.

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
 
            string connStr = "server=xxx;user id=xxx; password=xxx; database=xxxx; pooling=true;";
            conn = new MySqlConnection(connStr);
            conn.Open();
            // --------------------------
            MySqlDataReader reader = null;
            MySqlCommand cmd = new MySqlCommand("SELECT REF FROM CAT_OFFRE WHERE SUPPLIER = 'APPLE'", conn);
            reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                    MySqlDataReader reader2 = null;
                    MySqlCommand cmd2 = new MySqlCommand("SELECT REF FROM CAT_OFFRE WHERE SUPPLIER = 'APPLE'", conn);
                    reader2 = cmd2.ExecuteReader();
                    while (reader2.Read())
                    {
                        Response.Write(reader2["REF"].ToString().Trim() + "<br />");
                    }
                    reader2.Close();
                    cmd2.Dispose();
            }
            reader.Close();
            cmd.Dispose();
            // --------------------------
            conn.Close();
            conn.Dispose();
Mon message d'erreur : There is already an open DataReader associated with this Connection which must be closed first.
Dans la boucle lors de la lecture de la ligne : reader2 = cmd2.ExecuteReader();
Je sais j'ai deux fois la même requetes. tests.
J'ai trouvé cette explication : "But there is a flag in MS SQL connection string which allows multiple readers to be open for a single connection: "MultipleActiveResultSets=True" solves the problem. "
J'ai essayé de le placer dans la connectionstring mais commande inconnue.

Pour info, quand je fais la même chose sur Oracle par exemple, aucun soucis.

Je peux aussi passer par des tables en mémoire au passer par des procédures stockées mais je voudrais comprendre pourquoi cela est-il impossible sur MySql.

Si quelqu'un à une soluce je suis preneur.

Daniel