IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Bibliothèque pour fonctions SQL : Module ou Classe ?


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 306
    Par défaut Bibliothèque pour fonctions SQL : Module ou Classe ?
    Bonjour à tous,

    Je pars sur un nouveau projet web en ASP .Net et j'avais une question.
    Pour créer des fonctions d’exécution de requête SQL (sur un SQL Server en réseau), du style récupérer un SELECT dans un SqlDataReader, exécuter un UPDATE, ...

    Jusqu'à maintenant j'utilisais un Module avec mes différentes fonctions. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
        Public Function GetReader(ByVal pRequeteSQL As String) As SqlDataReader
            Dim vConn As New SqlConnection("MaChaineDeConn")
            vConn.Open()
     
            Using vCommande As New SqlCommand(pRequeteSQL, vConn)
                Return vCommande.ExecuteReader(Data.CommandBehavior.CloseConnection)
            End Using
        End Function
     
        Public Sub ExecuteSQL(ByVal pRequeteSQL As String)
            Using vConnSQL As SqlConnection = New SqlConnection("MaChaineDeConn")
                vConnSQL.Open()
     
                Using vCdeSQL As SqlCommand = New SqlCommand(pRequeteSQL, vConnSQL)
                    vCdeSQL.ExecuteNonQuery()
                End Using
            End Using
        End Sub
    Ainsi j'ouvre et je ferme la connexion a chaque exécution de requête. Il peut donc y avoir plusieurs ouvertures/fermetures de base sur un même Page_Load.

    Ou est-il mieux d'utiliser un Classe ? En ouvrant la connexion dans le New() et exécutant les différentes requêtes avec donc la même connexion, puis en fermant dans le Dispose().
    Ainsi une seule connexion base pour plusieurs requêtes sur un même Page_Load.

    Quel est la meilleure solution ?

    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Idéalement il faut tenir la connexion au server sql le moins longtemps possible.
    Mais si tu sais que dans ton page_load tu vas exécuter 3 commandes (SQL) par exemple, c'est mieux le faire dans la même connexion mais ca dépendra de ta logique...

    Pour en revenir a ta question, je ferais plutôt une class qui te permettra de faire l'un ou l'autre tandis que ton module ne te permettra que de faire la première solution.

    A+

  3. #3
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 306
    Par défaut
    Merci Dokho1000

    Autre question, si j'utilise une classe, comment faire pour initialiser ma classe (et donc ouvrir la connexion) sur toutes les pages, sans devoir l'écrire sur toutes les pages.
    Dans le .master ou une classe héritée, est-ce possible ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Citation Envoyé par aloisio11 Voir le message
    Merci Dokho1000

    Autre question, si j'utilise une classe, comment faire pour initialiser ma classe (et donc ouvrir la connexion) sur toutes les pages, sans devoir l'écrire sur toutes les pages.
    Dans le .master ou une classe héritée, est-ce possible ?
    tu pourrais faire une class qui hérite de Page et dans celle ci faire une sorte de singleton, lorsque la page est appelée le connexion s'initialise et tu fais le dispose sur l'evenement unload
    Toutes tes pages dans le code-behind heriteraient donc de ta nouvelle class...

    A+

  5. #5
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 306
    Par défaut
    Citation Envoyé par Dokho1000 Voir le message
    tu pourrais faire une class qui hérite de Page et dans celle ci faire une sorte de singleton, lorsque la page est appelée le connexion s'initialise et tu fais le dispose sur l'evenement unload
    Toutes tes pages dans le code-behind heriteraient donc de ta nouvelle class...

    A+
    Merci Dokho1000

    Comment faire cela ?
    Comme ça ?
    http://stackoverflow.com/questions/9...ge-load-method

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Oui, sauf que tu ferais plutot quelque chose du genre (en C#) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public class BaseClass : Page{
     
    private IDbConnection _conn = null;
    protected IDbConnection DbConnection {
         get{
              if(_conn == null){
                   _conn = new SqlConnection("maconnectionstring");
                   _conn.Open();
              }
              return _conn;
         }
    }
     
    }
    Pour récupérer ta connexion, de cette facon si ta page n'a pas besoins de faire de connexion à la db celle-ci ne sera jamais ouverte...

    A+

  7. #7
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 306
    Par défaut
    OK, merci bien ;-)

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Citation Envoyé par aloisio11 Voir le message
    OK, merci bien ;-)
    n'oublie pas de mettre le post en "Résolu"

    ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une classe pour servir de bibliothèque de fonctions ?
    Par Tokapi dans le forum Général Java
    Réponses: 1
    Dernier message: 12/11/2015, 10h01
  2. bibliothèque pour fonction trim,left.
    Par T.IMENE dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 31/01/2013, 13h16
  3. Fonction SQL Pour valeur nulle
    Par claralavraie dans le forum Oracle
    Réponses: 5
    Dernier message: 04/10/2006, 13h39
  4. creation d'une fonction SQL pour generer du XML
    Par MuldyMath dans le forum Oracle
    Réponses: 3
    Dernier message: 07/06/2006, 11h22
  5. [Module de classe] Fonction non liée à l'instance?
    Par Caroline1 dans le forum Access
    Réponses: 6
    Dernier message: 07/04/2006, 20h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo