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 :

Problème et question connexion base de données avec Datasets.


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 80
    Points : 46
    Points
    46
    Par défaut Problème et question connexion base de données avec Datasets.
    Bonjour,

    Nous utilisons un modèle de développement en couches comportement des Datasets fortement typés, des table adapteurs (les 2 créés à l'aide du designer VS 2005), et des objets métier, DAL et BLL, selon l'exemple qui suit.

    De temps à autres nous obtenons des exceptions dont je n'arrive pas à trouver la cause :

    Message: ExecuteReader nécessite une connexion ouverte et disponible. L'état actuel de la connexion est en cours de connexion.

    Message: ExecuteReader nécessite une connexion ouverte et disponible. L'état actuel de la connexion est ouvert.
    Mes Questions :
    - Pouvez-vous me dire comment faire pour corriger ces exceptions ? (puisque je ne gère pas la connexion à la base de données, et le fait de ne pas la fermer me gène un peu) ?
    - Est-ce que j'oublie quelque chose dans la procédure ?

    - Doit-on créer un objet de connexion et l'utiliser lorsqu'on utilise les procédures stockées du Dataset (je pensais que ça gérait automatiquement . ).
    Est
    - Est t'il conseillé de faire un dispose des datatable après chaque utilisation ?


    Merci beaucoup.


    Voici un 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    
    Instance statique de  l’objet DAO
            static private  objetDAO instance = null;
            static public  objetDAO Instance
            {
                get
                {
                    if (instance == null)
                        instance = new objetDAO ();
                    return instance;
                }
            }
    
    Table Adapter 
            objetTA objetTA;
            protected ObjetTA ObjetTA
            {
               get
               {
                    if (objetTA == null)
                    {
                        objetTA = new ObjetTA ();
                    }
                    return objetTA;
                }
             }
    
    
    
    
    
    
    
    ex de procédure  dans Objet DAL
    
    public List< MonObjet > Getobjets(Byte Param1)    {
    
                 List< MonObjet > result = new List< MonObjet >();
                 dsMonObjet.MonObjetDataTable oTable = ObjetTA.SelectMonObjet(Param1);
    
                 foreach (dsMonObjet. MonObjetRow oRow in oTable.Rows)
                 {
    // la fonction crée une instance de l’objet metier et  
    //lui donne ses propriés du genre monObjet.propriete1 = // oRow.propriete1
                     result.Add(CreateMonObjetEntity(oRow));
                 }
                 oTable.Dispose();
                 return result;
             }
    
    Objet BLL
    public List< MonObjet > Getobjets (byte Param1)
            {
                try
                {
    //instance de l’objet BLL
    return BusinessProvider.MonObjet.Getobjets (Param1);
                }
                catch (Exception e)
                {
                    throw new CustomException("… !", e);
                }
            }

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Et qu'y a-t-il dans objetDAO?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 80
    Points : 46
    Points
    46
    Par défaut
    Pardon j'avais une mise en prod dans l'intervalle.

    Alors les objet DAO comprennent
    Une méthode statique :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       static private objetDAO instance = null;
                static public  objetDAO Instance
                {
                    get
                    {
                        if (instance == null)
                            instance = new objetDAO ();
                        return instance;
                    }
                }
    La déclaration des Table Adpaters utilisés dans le dataset coorespondant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       MonObjetTA monobjetTA;
                protected MonObjetTA MonObjetTA 
                {
                    get
                    {
                        if (groupeTA == null)
                        {
                            monobjetTA= new MonObjetTA();
                        }
                        return monobjetTA;
                    }
                }

    et les méthodes de récupération , par ex liste :

    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 List<Objet> GetObjets()
                {
                    List<Objet> result = new List<Objet>();
                    dsObjets.ObjetDataTable oTable = MonObjetTA.SelectObjets();
     
                    foreach (dsObjets.ObjetRow oRow in oTable.Rows)
                    {
                        result.Add( création de l'instance de l'obet métier avec oRow );
     
                    }
                    oTable.Dispose();
                    MonObjetTA.Dispose();
                    return result;
                }


    en sachant que je me suis inspré d'un programme existant, mes objets DAO héritent d'une classe DataAcess

    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
    20
    21
     
    public abstract class DataAccess
        {
            private bool _enableCaching = true;
            protected bool EnableCaching
            {
                get { return _enableCaching; }
                set { _enableCaching = value; }
            }
     
            private int _cacheDuration = 0;
            protected int CacheDuration
            {
                get { return _cacheDuration; }
                set { _cacheDuration = value; }
            }
     
            protected Cache Cache
            {
                get { return System.Web.HttpContext.Current.Cache; }
            }

    En espérant que ça aide.

Discussions similaires

  1. Connexion base de donnée avec un code C#
    Par yochima dans le forum C#
    Réponses: 12
    Dernier message: 20/05/2017, 19h12
  2. Problème de création de base de donnée avec linq
    Par Idredeguerre dans le forum Linq
    Réponses: 11
    Dernier message: 21/04/2009, 14h58
  3. connexion base de données avec wxwidgets
    Par Zavonen dans le forum wxWidgets
    Réponses: 7
    Dernier message: 17/09/2007, 07h15
  4. creer connexion base de donné avec dbedit eclipse
    Par youcef81 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 22/07/2006, 17h37
  5. Problème d'interface de base de données avec Frontpage
    Par Auxtown-Son dans le forum Outils
    Réponses: 3
    Dernier message: 11/07/2006, 16h42

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