Partage
  • Partager sur Facebook
  • Partager sur Twitter

Class pour gerer une base de donnée

    27 février 2011 à 10:43:32

    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




    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      27 février 2011 à 10:55:42

      Mets ton code entre les balises code s'il-te-plaît.
      • Partager sur Facebook
      • Partager sur Twitter
        27 février 2011 à 21:37:33

        j'avais pas vu, merci

        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
        

        • Partager sur Facebook
        • Partager sur Twitter

        Class pour gerer une base de donnée

        × 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.
        • Editeur
        • Markdown