VB.NET problème function-requete & question

Fermé
Freedomsoul - Modifié par Freedomsoul le 7/05/2011 à 19:13
Freedomsoul Messages postés 509 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 17 avril 2013 - 9 mai 2011 à 13:49
Bonsoir,

Voilà, j'ai un problème concernant une fonciton,

 Function requete_BDD(ByVal requete, Optional ByVal type = 0) 

        Dim connexion As New System.Data.OleDb.OleDbConnection() 
        connexion.ConnectionString = "provider = Microsoft.Jet.OleDB.4.0;DATA source = '..\..\..\..\BDD.mdb'" 
            connexion.Open() 

            Dim cmd As New OleDbCommand(requete, connexion) 
            Dim reader As OleDbDataReader = cmd.ExecuteReader 
            Dim resultat 

            reader.Read() 

            If type = 2 Then 
                resultat = reader 'reader contiendra un tableau de valeur, 'lié a la requete sql) 
                Return resultat 
                connexion.Close() 
'Problème.. Il faut fermer la connexion avant le renvoie de la fonction !! 
'Mais ... comme c'est un tableau, si je ferme la connexion, la pointeur vers le tableau est "bloqué.. enfin .. c'est ce que je pense .. et le problème est qu'au bout d'un trop grand nombre de requete de ce genre... la connexion est refusé.. sans doute car il y en a trop.. 
'IL faudrait passer les valeur du tableau dans un nouveau tableau, cependant, je rencontre quelque difficulté avec le for each val in reader, y aurait-il une fonction count ? pour un tableau ? je suis bloqué par ce problème d'accès :s 
'en gros si je mets le connexion.close avant... ça plante. le return ne revois rien ! ><

            End If 
'[...] 


    End Function


PS: j'ai simplifier mon code pour un meilleur lisibilité, cela n'influe rien sur mon problème :)

3 réponses

yukino-chan Messages postés 12 Date d'inscription samedi 7 mai 2011 Statut Membre Dernière intervention 9 mai 2011
Modifié par yukino-chan le 8/05/2011 à 04:05
Bonsoir Freedomsoul,

J'ai essayé de faire des changement sur votre fonction mais en connection avec sqlserver et ça a fonctionné.




Function requete_BDD(ByVal requete, Optional ByVal type = 0) As Collection
Dim connexion As New System.Data.OleDb.OleDbConnection()
connexion.ConnectionString = "provider = Microsoft.Jet.OleDB.4.0;DATA source = '..\..\..\..\BDD.mdb'"
connexion.Open()


Dim cmd As New OleDbCommand(requete, connexion)
Dim reader As OleDbDataReader = cmd.ExecuteReader
Dim resultat As New Collection

If type = 2 Then
While reader.Read()
resultat.Add(reader(0))
End While
reader.Close()
connexion.Close()
Return resultat
End If
End Function





j'espère qu'elle marchera pour vous =) bonne soirée ^^
0
J'essaie ça de suite !
0
Eh bien ça ne fonctionne pas... mais a quoi correspond le type collection?

La valeur que je renvoie n'est pas forcément plusieur valeur !
If type = 2 Then 
                resultat = reader 'reader contiendra un tableau de valeur, 'lié a la requete sql) 
                Return resultat 
                connexion.Close()
elseif type = 1 then
                resultat = reader(0) 'lunique valeur est renvoyée
                connexion.Close()                
Return resultat
                
end if


selon la requete, on renvoie directement ou pas
0
Freedomsoul Messages postés 509 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 17 avril 2013 97
9 mai 2011 à 13:49
UP
0