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 confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 80
    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 confirmé
    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
    Par défaut
    Salut,

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

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

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 80
    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