VB.NET problème function-requete & question
Freedomsoul
-
Freedomsoul Messages postés 538 Statut Membre -
Freedomsoul Messages postés 538 Statut Membre -
Bonsoir,
Voilà, j'ai un problème concernant une fonciton,
PS: j'ai simplifier mon code pour un meilleur lisibilité, cela n'influe rien sur mon problème :)
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 :)
A voir également:
- VB.NET problème function-requete & question
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
- Difficulté avec requête SQLite ✓ - Forum Android
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ? ✓ - Forum Access
- L'opérateur ou l'administrateur a refusé la requête ✓ - Forum Windows
- Erreur d'exécution de la requete erreur inconnue - Forum Logiciels
3 réponses
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 ^^
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 ^^
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 !
selon la requete, on renvoie directement ou pas
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