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

avec Java Discussion :

The static method should be accessed in a static way


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut The static method should be accessed in a static way
    Bonjour,

    Travaillant principalement autour des bases de données, je n'ai pas fait de programmation depuis quelques années et je voudrais me remettre à Java pour réaliser des prototypes (et me remettre à jour sur ces technos).
    J'ai donc commencé par créer une classe toute simple permettant de créer une connexion JDBC vers un DB2 et d’exécuter une requête toute simple.
    Tout marche bien mais je suis curieux du warning que m'indique Eclipse et qui dit la chose suivante : "The static method seConnecter(String, String, String) from the type ConnexionJDBC should be accessed in a static way"
    Dans mes souvenirs (qui ont peut être étés altérés), il fallait créer des classes et gérer des instances. J'ai donc créé une classe ConnexionJDBC dans laquelle j'ai créé des méthodes seConnecter, seDeconnecter, executerSQL et commiter. Ensuite dans mon autre classe (qui génère les requêtes et gère l'affichage) je fais donc (en simplifiant):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ConnexionJDBC maConnexionJDBC = null;
    ResultSet rs;
     
    maConnexionJDBC.seConnecter(url, user, password);
    rs = maConnexionJDBC.executerSQL(ordreSQL); 
    maConnexionJDBC.seDeconnecter();
    J'ai donc des Warnings dés que j'essaie d'utiliser mon instance de ConnexionJDBC et Eclipse me propose d'utiliser directement la classe (donc du genre ConnexionJDBC.seConnecter(...)). En effet ça marche également mais j'ai du mal à saisir le pourquoi de ce warning. Si je respecte ce que me dit Eclipse, comment suis-je censé gérer plusieurs connexions ? C'est juste de la curiosité mais si quelqu'un pouvait m'expliquer rapidement ce serait sympa.

    merci d'avance

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    Cela vient du fait que tu appelles une méthode statique via une instance de la classe.

    Tu as déclaré seConnecter(url, user, password) comme une méthode static de la classe ConnexionJDBC. Pour ne plus avoir de warnings, tu as deux solutions:

    *) soit utiliser l'appel (méthode de classe)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ConnexionJDBC.seConnecter(url, user, password);
    *) soit ne plus déclarer seConnecter(url, user, password) comme static est alors, tu peux l'appliquer sur ton objet maConnexionJDBC :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ConnexionJDBC maConnexionJDBC = null;
    maConnexionJDBC.seConnecter(url, user, password);

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Memeche Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ConnexionJDBC maConnexionJDBC = null;
    ResultSet rs;
     
    maConnexionJDBC.seConnecter(url, user, password);
    rs = maConnexionJDBC.executerSQL(ordreSQL); 
    maConnexionJDBC.seDeconnecter();
    D'après ton exemple, il semblerait que ta classe ConnexionJDBC encapsule un objet Connection, du coup, je ne vois pas trop l'intérêt d'une méthode static, dans tous les cas tu auras besoin d'une variable d'instance.

    Que rajoutes-tu dans cette classe pour justifier ce mécanisme ? De mon expérience, il est plus judicieux d'avoir une classe utilitaire pour récupérer un objet Connection et laisser la fonction appelante gérer son existence... mais bon, à toi de voir
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. warning "static method should be accessed in static way"
    Par bmayer dans le forum Général Java
    Réponses: 5
    Dernier message: 02/04/2015, 16h31
  2. static method should be accessed in a static way
    Par b_lob dans le forum Général Java
    Réponses: 18
    Dernier message: 04/05/2011, 00h41
  3. Cannot make a static reference to the non-static method readValues
    Par delta07 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 30/06/2010, 15h14
  4. non-static method cannot be referenced from a static context
    Par Spawny123 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 04/03/2010, 21h38
  5. Cannot make a static reference to the non-static method
    Par semaj_james dans le forum Langage
    Réponses: 5
    Dernier message: 11/05/2006, 23h10

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