begin process at 2008 08 30 01:15:55
1 233 969 membres
8 nouveaux aujourd'hui
14 294 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Connexion à une base SQL [ Archives ASP & ASP.NET / ASP.net ] (arkele)

Connexion à une base SQL le 27/06/2005 08:14:49

arkele
J'utilise une base de données SQl Server.
Comme dans mon application j'utilise un grand nombre de reader, j'ai créé une fonction SQL_Reader qui permet de créer un reader à partir d'une requêt SQL placée en paramètre de ma fonction.
Ma fonction est la suivante :

Public Function SQL_Reader(ByVal Req_SQL As String) As SqlDataReader

Dim oConn As New SqlConnection(ConfigurationSettings.AppSettings("SqlServer"))
oConn.Open()
Dim myCommand As SqlCommand = New SqlCommand(Req_SQL, oConn)
Dim monSQL_Reader As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
SQL_Reader = monSQL_Reader

End Function


Je renvoie le reader. Le problème s'est que je ne sais pas comment fermer ma connexion à ma base de données vu que oConn est déclaré dans ma fonction.
Si je ne la ferme pas, il me dit qu'une connexion est déjà ouverte lorsque je veux créer un nouveau reader.
Où dois je fermer ma connexion,

Merci,

Re : Connexion à une base SQL le 27/06/2005 16:51:54

IvanTheBlackDog

Public Function SQL_Reader(ByVal Req_SQL As String) As SqlDataReader

Dim oConn As New SqlConnection(ConfigurationSettings.AppSettings("SqlServer"))
oConn.Open()
Dim myCommand As SqlCommand = New SqlCommand(Req_SQL, oConn)
Dim monSQL_Reader As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
SQL_Reader = monSQL_Reader

oConn.Close
Set oConn=Nothing

End
Function

je pense que ça devrait aller.
______________________
Le Black Dog c'est moi


Re : Connexion à une base SQL le 28/06/2005 08:19:12

arkele
c'est pas possible que je le ferme dans ma fonction car je ne pourrai plus utiliser le reader par la suite. si je mets oConn.close dans cette fonction, il va m'ouvrir ma connexion, créer le reader et me fermer ma connexion ce qui va m'empêcher de pouvoir utiliser mon reader. J'ai essayé et le message d'erreur était : "tentative non valide de lecture...".

une autre idée peut être?

Re : Connexion à une base SQL le 30/06/2005 19:54:27

Nurgle
Membre Club
(Admin CS)
Salut,
Dans ce cas là tu dois créer une classe :

Public Class SQL_Reader
Private oConn As New SqlConnection(ConfigurationSettings.AppSettings("SqlServer"))

Public Sub New()
oConn.Open
End Sub

Public Sub Finalize()
oConn.Close
oConn = Nothing
End Sub

Public Function Read(ByVal Req_SQL As String) As SqlDataReader

Dim oConn As New SqlConnection(ConfigurationSettings.AppSettings("SqlServer"))
oConn.Open()
Dim myCommand As SqlCommand = New SqlCommand(Req_SQL, oConn)
Dim monSQL_Reader As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
Read = monSQL_Reader

End Function
End Class

Et tu l'utilise comme ça :

Dim machin As SQL_Reader 'tu déclenche l'énènement New()
Dim truc As DataReader = machin.Read
' là tu mets tout le traitement qui a besoin que la connexion soit ouverte
machin = Nothing ' tu déclenche l'évènement Finalize() et ça ferme la connexion



Nurgle

C'est une grande folie que de vouloir être sage tout seul !


Classé sous : fonction, base, sql, connexion, reader

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS