Bonjour,
Je suis en vb.net.
j'ai créer une class pour gérer les principales action que j'ai à faire sur les bases de données.
Le problème c'est que pour faire un read et passer l'information je dois laisser ma connecion open et que du coup c'est dans le corps du programme que je dois la clôturer ce qui enlève beaucoup à l'intérêt de la chose.
je mets le code ci dessou ça sera plus calir
la class en question
Imports Npgsql
Public Class runsql
'je declare la constante de connexion à changer en cas de changement de base
Public sconnexion As String = "connexion"
Private _srequete As String
Public readconn As NpgsqlConnection
Public Property read()
Get
'Dim conn As NpgsqlConnection
Dim cmd As New NpgsqlCommand
Dim r As NpgsqlDataReader
Dim sql As String
Try
readconn = New NpgsqlConnection(sconnexion)
readconn.Open()
sql = _srequete
cmd = New NpgsqlCommand(sql, readconn)
r = cmd.ExecuteReader 'si je le mets là cela je ne peux plus récupérer les données
'conn.Close()
Return r 'si je le mets là celà ne viendra jamais jusque là
'conn.Close()
Catch ex As Exception
If readconn.State = ConnectionState.Open Then readconn.Close()
MsgBox(ex.Message)
' que retourner en cas d'erreur?
Return Nothing
End Try
End Get
Set(ByVal value)
Try
_srequete = value
Catch ex As Exception
MsgBox(ex)
End Try
End Set
End Property
End Class
'un bouton de test ou j'apppel ma class pour faire un read
Private Sub Button1_Click_4(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sql As New runsql
Dim reader As NpgsqlDataReader
Dim sresult As String
sql.read = "select * from ......."
reader = sql.read
reader.Read()
MsgBox(reader("nom_du_champs que je veux rappatrier"))
'du coup je dis cloturer ici
sql.readconn.Close()
End Sub
Y aurait il un moyen pour que je n'ai pas à faire cette clôture ici mais avant le return????
Si quelqu'un sait comment s'y prendre ça serait super.
Merci
Imports Npgsql
Public Class runsql
'je declare la constante de connexion à changer en cas de changement de base
Public sconnexion As String = "connexion"
Private _srequete As String
Public readconn As NpgsqlConnection
Public Property read()
Get
'Dim conn As NpgsqlConnection
Dim cmd As New NpgsqlCommand
Dim r As NpgsqlDataReader
Dim sql As String
Try
readconn = New NpgsqlConnection(sconnexion)
readconn.Open()
sql = _srequete
cmd = New NpgsqlCommand(sql, readconn)
r = cmd.ExecuteReader
'si je le mets là cela je ne peux plus récupérer les données
'conn.Close()
Return r
'si je le mets là celà ne viendra jamais jusque là
'conn.Close()
Catch ex As Exception
If readconn.State = ConnectionState.Open Then readconn.Close()
MsgBox(ex.Message)
' que retourner en cas d'erreur?
Return Nothing
End Try
End Get
Set(ByVal value)
Try
_srequete = value
Catch ex As Exception
MsgBox(ex)
End Try
End Set
End Property
End Class
'un bouton de test ou j'apppel ma class pour faire un read
Private Sub Button1_Click_4(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sql As New runsql
Dim reader As NpgsqlDataReader
Dim sresult As String
sql.read = "select * from ......."
reader = sql.read
reader.Read()
MsgBox(reader("nom_du_champs que je veux rappatrier"))
'du coup je dis cloturer ici
sql.readconn.Close()
End Sub
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.