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

C# Discussion :

Comment déclarer les variables pour avoir ce résultat? (Classe, const, enum, struct?)


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut Comment déclarer les variables pour avoir ce résultat? (Classe, const, enum, struct?)
    Bonjour à tous,

    Je me tourne vers vous car j'ai un petit soucis pour réaliser la chose suivante.
    J'utilise des requêtes SQL afin d'interroger ma base de données.
    Afin de faire le moins d'erreur de frappe dans mes requêtes, je voudrais mettre en place un fichier avec le nom de mes tables et de mes champs.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var query = _Context.Query("SELECT * FROM " + Sdb.utilisateur + " WHERE " + Sdb.utilisateur.id_utilisateur + "= 5 LIMIT 10");

    Le principe serait de travailler avec des constante ou des membres statiques pour avoir l’auto-complétion. Le problème c'est que je ne sais pas comment faire plusieurs niveaux pour avoir par exemple Sdb.utilisateur.id_utilisateur

    Si vous avez des idées ou des conseils, je suis preneur.

    PS: Je pense que sans utiliser des classes imbriquées ce n'est pas possible

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par takinelinfo Voir le message
    Le problème c'est que je ne sais pas comment faire plusieurs niveaux pour avoir par exemple Sdb.utilisateur.id_utilisateur
    ...
    PS: Je pense que sans utiliser des classes imbriquées ce n'est pas possible
    Effectivement on peut utiliser des classes imbriquées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Sdb
    {
        public class utilisateur
        {
            public const string utilisateur_id = "utilisateur_id";
        }
    }
    Tu peux aussi utiliser des namespaces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    namespace Sdb
    {
        public class utilisateur
        {
            public const string utilisateur_id = "utilisateur_id";
        }
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    En fait je faisais fausse route en faisant:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static class SchemaDatabase
    {
    	public static user user;
    }
     
    public static class user
    {
    	public static string id_user = "id_user";
    	public static string lastname = "lastname";
    	public static string firstname = "firstname";
    }

    Méthode 1:
    Je ne savais pas qu'on pouvez déclarer des classes dans des classes.

    Méthode 2:
    Pas mal aussi.

    Laquelle penses tu la mieux appropriée?
    En tout cas un grand merci.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Je dirais plutôt la méthode 1, parce que ça me semble logique de regrouper tout ça dans une même classe

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    C'est un bon raisonnement je pense.
    Dernier point la dessus, n'y a t'il pas moyen de faire en sorte que:
    Sdb.utilisateur me retourne "utilisateur"

    Je pensais overrider la méthode ToString() mais ça ne marche que si c'est une instance.Du coup je pense que je vais faire Sdb.utilisateur.TABLE, TABLE étant aussi une constante.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    a ta place j'utiliserai plutot des enum:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    enum Table
    {
    utilisateur,
    score
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    enum Utilisateur
    {
     marc,
    jean,
    paul}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var query = _Context.Query("SELECT * FROM " + Table.utilisateur + " WHERE " + Utilisateur.marc + "= 5 LIMIT 10");
    Mais attention, tout ca est ultra crade hein ! ca va vite devenir un enfer à maintenir/faire évoluer

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par giova_fr Voir le message
    a ta place j'utiliserai plutot des enum:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    enum Table
    {
    utilisateur,
    score
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    enum Utilisateur
    {
     marc,
    jean,
    paul}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var query = _Context.Query("SELECT * FROM " + Table.utilisateur + " WHERE " + Utilisateur.marc + "= 5 LIMIT 10");
    le problème des enum c'est que tu ne peux pas y associer autre chose qu'un int, donc les chaines de caractères je peux oublier.

    Mais attention, tout ca est ultra crade hein ! ca va vite devenir un enfer à maintenir/faire évoluer
    Je m'en doute un peu, mais je me dis que cette méthode ne peut faire que du bien. Mais si tu as mieux je suis preneur

Discussions similaires

  1. [Débutant] Comment déclarer des variables publiques pour tous les formulaires
    Par Claude_Azoulai dans le forum C#
    Réponses: 5
    Dernier message: 09/05/2013, 17h50
  2. Réponses: 11
    Dernier message: 05/04/2010, 22h10
  3. Réponses: 15
    Dernier message: 24/01/2009, 23h24
  4. Réponses: 3
    Dernier message: 09/01/2007, 09h44
  5. Réponses: 4
    Dernier message: 20/04/2006, 02h56

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