Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2483 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  MySqlDataReader et MySqlConnection

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MySqlDataReader et MySqlConnection

n°2026217
khouja
Posté le 30-09-2010 à 22:52:54  profilanswer
 

Bonjour,
 
j'ai déclaré une connexion Cn comme une variable public
public Cn As New MySqlConnection
 
dans la form_load de ma feuille je me connecte à la BD
 
     Cn.ConnectionString = "Server=" & serveur_bd & ";Database=bd;Uid=root;Pwd=" & mdp & ";"
     Cn.Open
 
J'ai une procedure comme suit :
 
Private Function Ma_Fonction(ByVal ido As Int16) As List(Of String)
       Dim r As New List(Of String)
       Dim cmd As MySqlCommand
       Dim dr As MySqlDataReader
       cmd = New MySqlCommand("select * from maTable where id=" & ido, Cn)
       dr = cmd.ExecuteReader
       Do While dr.Read
       r.Add(dr.Item("info" ))
       Loop
       dr.Close()
       Return r
End Function
 
 
Jusque là ça marche
 
Mais comme j'utilise le Multithreading, cette fonction peut être appelée par 2 threads au même instant ce qui engendre l'erreur
 
There is already an open DataReader associated with this Connection which must be closed first
 
Comment faire ?
 
Merci

mood
Publicité
Posté le 30-09-2010 à 22:52:54  profilanswer
 

n°2026396
TotalRecal​l
Posté le 01-10-2010 à 22:02:44  profilanswer
 


Si je peux me permettre c'est pas vraiment une question de provider, il me semble que dès que tu travailles en mode connecté (Datareader) tu rencontres ce genre de soucis, peu importe le provider et le SGBD derriere.
Toujours de mémoire, en ADO Net 2, il y a une solution de contournement qui s'appuie sur un principe appelé MARS (Multiple Active Records Set) qui commence par l'utilisation d'un paramètre spécial dans la chaîne de connexion (MultipleActiveResultSets=true).
Sinon évidemment il y a la solution d'utiliser plusieurs connexions mais bon...

Message cité 1 fois
Message édité par TotalRecall le 01-10-2010 à 22:04:04

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2026431
khouja
Posté le 02-10-2010 à 10:59:59  profilanswer
 

L'utilisation de plusieurs connexions  
c-a-d je dois écrire  :
 
dim cn as New MySqlConnection
cn.ConnectionString = blablabla
cn.Open
 
à chaque fois et cette opération prend un espace de temps assez important vu que la procédure où se trouvent les DataReader est appelée à des intervalles de quelques millisecondes

n°2026511
TotalRecal​l
Posté le 02-10-2010 à 22:47:12  profilanswer
 


Ah ok ! Oui formulé comme ça c'est parfaitement juste, j'avais en fait interprété ton post dans le sens : "l'impossibilité d'ouvrir plusieurs DataReader avec une connexion unique est une spécificité du provider mysql, avec les autres ça fonctionne". C'est vrai que tu étais très vite passé sur la question, ta phrase était un peu ambigue et j'ai choisi la mauvaise interprétation possible. Enfin c'est sans importance, tant qu'on se comprend tous :)
:hello:

 

edit : et pour ce qui est du fait que le truc dont je parle est une spécificité sqlserver, désolé là c'est ma faute, sur le coup je n'y prêtais pas attention.


Message édité par TotalRecall le 02-10-2010 à 22:48:28

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  MySqlDataReader et MySqlConnection

 

Sujets relatifs
Plus de sujets relatifs à : MySqlDataReader et MySqlConnection


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR