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 :

Utiliser requêtes accès à la BD en dehors d'un formulaire


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Par défaut Utiliser requêtes accès à la BD en dehors d'un formulaire
    Bonjour tout le monde.

    J'ai un problème au niveau pratique. Je vous explique :

    J'ai des classes permettant d'effectuer des requêtes sur ma base de données. Ces classes correspondent à des update, select, delete, etc... En gros on peut les utiliser sur des objets qui représentent des tables de la BD.

    J'ai un formulaire dans un UserControl.

    Ce formulaire affiche les informations d'une ligne de la BD (Personne n°1, son nom, son prenom), enfin le truc de base quoi.

    Le truc, c'est qu'il faut que j'utilise mes classes de requêtes pour afficher les infos, à l'EXTERIEUR de mon usercontrol.cs, en gros, pas accéder directement via le UserControl...

    En somme, je ne dois absolument pas faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    public partial class Application_Pages_UserControl : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
           ObjetPersonne personne = new ObjetPersonne();//Instanciation
           personne.Requete.SelectionPremier(nom);//Requete de selection du premier nom 
           this.Nom.text = personne.resultPremier;//Assignation au champ
        }
    }
    Mais concrètement, je ne vois pas comment faire, comment ne pas utiliser directement ces classes dans mon UserControl, qui signifierait un accès à la base de données direct...

  2. #2
    Membre confirmé Avatar de DoRiane
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Par défaut
    Bonjour,
    regarde du coté de l'ObjectDataSource

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Par défaut
    Est ce que c'est un travail d'école ou un truc dans le genre ?
    Car tu dis que tu ne dois absolument pas faire, t'es en train de d'écrire un énnoncé ???

    Je suppose que tu parles d'un projet qui se découpe en plusieurs couche,
    - une couche object (une class par table) ici ce sera la class Personne.
    - une couche Data, tes classes qui vont faire les select, update et autres
    - Ton usercontrol, dont tu dis qu'il ne peut pas accéder à la couche Data

    Donc en fait, ce qu'il te faut, c'est rechercher des informations concernant le Pattern MVC.

    Entre ton userControl et la partie Data, tu as une couche Controller, qui elle accédera à la partie Data et te renverra uniquement ton String à ton usercontrol.

    Fix

  4. #4
    Membre éclairé Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Par défaut
    Ha non, ce n'est pas un travail d'école, c'est à mon taff tout court ^^.

    Je vais me renseigner sur le Pattern MVC, mais je n'ai vu que des références pour le java (même si le java ressemble au c#).

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Par défaut
    Salut,

    Désolé d'avoir cru que c'était pour l'école, tu disais que tu étais obligé de séparer les choses Donc je sous entendais que si on te disait de séparer, c'est qu'on t'avait expliquer pourquoi.

    soit voilà un site : MVC

    Tu dois même pouvoir trouver un doc sur developpez.com (Rien qu'en C#)

    Fix

  6. #6
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Surtout que ASP.NET 3.5 intègre le pattern MVC (avec des classes comme en JAVA).

    http://weblogs.asp.net/scottgu/archi...framework.aspx

    Y'a un article en plusieurs parties sur son blog.

  7. #7
    Membre éclairé Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Par défaut
    Je me suis renseigné hier sur MVC, mais en fait, je dois atteindre les données de la base de données en passant par des propriétés.

    Je m'explique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public Personne Personne
    {
      get
    {
         this._personne.nom = this.Nom.txt;
         return this._personne;
    }
     
    set
    {
        this.Nom.txt = this._personne.nom;
        this._personne = value;
    }
    En gros mon objet Personne contient tous les champs de la table Personne, il s'occupe de faire la connexion et la fermeture de la base de données, et contient toutes les requêtes nécessaires (update, insert, delete...).

    Je passe donc par les propriétés de mon ascx afin de lui assigner tout simplement les valeurs de mes champs.

    En somme:
    Mon UserControl ----> Mon Objet ------> Ma BD.
    C'est un peu le même principe ,qu'un pattern MVC non ?

    En tout cas merci de l'info sur MVC, ça m'a permis de me documenter.

  8. #8
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Par défaut
    Citation Envoyé par Ishizaki Voir le message
    En somme:
    Mon UserControl ----> Mon Objet ------> Ma BD.
    Normalement, ton Objet "Personne" n'est pas sensé accéder à la BD

    Mon Objet (je l'appelle Business Object BO) => Couche Manager => Couche Data Access Object (DAO) => Ma BD

    Dans mon code behind, je vais utiliser les méthodes couche Manager (via le BO ou non) qui vont elles faire appel aux méthodes de mon DAO qui gère la connexion à la BD, les requêtes (c'est le seul endroit où j'ai des requêtes visibles). Donc les seules méthodes qui ont accès à la BD sont celles de ma classe générale du DAO !

    J'espère que j'ai été clair

    Exemple :
    Dans mon BO : (Test.cs)
    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
     
        public class Test
        {
            #region id
            private int _id;
            public int id
            {
                get{ return this._id; }
                set{ this._id = value; }
            }
            #endregion
    ...
            public Test(int id)
            {
                // Constructeur surchargé
                this.id = id;
            }
        }
    Dans mon Manager : (Test_Manager.cs)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
            public DataTable GetAllTest
            {
                return Test.Instance().Select();
            }
    ...
    Dans mon DAO : (Test_DAO.cs)
    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
     
    ...
            private static Test_DAO _test_DAO = null;
            public static Test_DAO Instance()
            {
                // On vérifie si une instance n'est pas ouverte, sinon on en ouvre une nouvelle
                if (_test_DAO == null)
                    _test_DAO = new Test_DAO();
                return _forum_DAO;
            }
     
            public DataTable Select()
            {
                return GestionGlobale_DAO.Instance().Select("SELECT * FROM Test ;");
            }
    ...
    (en gros )

  9. #9
    Membre éclairé Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Par défaut
    Oui tout à fait clair merci ^^ !

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

Discussions similaires

  1. Accès à un répertoire en dehors de la webapp
    Par Galevsky dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 13/03/2009, 11h19
  2. Applet utilisant un acces au disque
    Par bellemlih dans le forum Applets
    Réponses: 2
    Dernier message: 06/03/2008, 09h05
  3. Accès à un répertoire en dehors du site
    Par thecrax dans le forum Apache
    Réponses: 6
    Dernier message: 22/01/2007, 09h32
  4. Pb requête acces en vb
    Par fabienschmitt dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 24/11/2006, 16h31
  5. Convertir une requête Acces en MySQL
    Par Creepy78 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 28/02/2006, 16h24

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