Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JAVA] MySQL récupérer une requete...

    18 novembre 2006 à 19:26:14

    Bonjour,

    Tout d'abord je précise que j'ai déjà effectué une recherche sur internet (et ici bien sûr) qui m'a aider à créer une connection à ma BDD MySQL, j'arrive aussi a executer des insertion, et des suppression...

    En fait ma méthode exec() marche, mais ma méthode query() renvoi un objet de type ResultSet, mais celui-ci est constament vide...

    Voici le code de ma classe abstraite BDD :
    package Persistant;


    import java.sql.*;

    import Application.*;
    //import com.mysql.jdbc.*;;
    public abstract class BDD {
           
            protected       String  host          = null;      //    url vers la base
            protected       String  base          = null;      //    nom de la Base
            protected       String  login        = null;     //   Login
            protected       String  password = null//        Password
           
            private static   BDD        bdd       = null;    //  l'instance unique
           
            protected       Connection     connection   = null;
            protected       Statement      statement     = null;
            protected       ResultSet      res   = null//        Stock le resultat de la dernière requete
           
            protected       String  sql                  = null;       //     requete sql
           
            /******************
             *      Constructeur  *
             ******************/

            public BDD(String host, String base, String login, String mdp){
                    this.host              = host;
                    this.base              = base;
                    this.login            = login;
                    this.password   = mdp;
                   
                    bdd = this;
            }

            public static BDD              getInstance(){
                    return bdd;
            }
           
            /*********************************
             *      Connection/Deconnection BDD  *
             *********************************/

            protected abstract void                 connecter       ();
           
            protected abstract void                 deconnecter     ();
           
            /****************
             *  Accesseurs  *
             ****************/

            public Connection getConnection(){
                    return connection;
            }
           
            public Statement getStatement(){
                    return statement;
            }
           
            public ResultSet getRes(){
                    return res;
            }
           
            /****************************
             *      Formatage des Requètes  *
             ****************************/

            public boolean   addEvenement(Event ev){
                    sql =
                            "INSERT INTO event Values( '" +
                            ev.getId() + "' , '" +
                            ev.getNom() + "' , '" +
                            ev.getRéseau().getId() + "' , '" +
                            ev.getCommentaire() + "' )";
                    exec(sql);
                    return false;
            }
           
            public boolean   delEvenement(int idE){
                    sql = "DELETE FROM event WHERE idE = '" + idE + "'";
                    exec(sql);
                    return false;
            }
           
            public boolean   updEvenement(int idE, Event ev){
                    return false;
            }
           
            public boolean   updLien    (int idL, Link lk){
                    return false;
            }
           
            public Event        getEvenement(int idE){
                    sql = "SELECT * FROM event WHERE id = '" + idE + "'";
                    res = query(sql);
                   
                    String nom = "";
                    String commentaire = "";
                    Réseau réseau = Réseau.getInstance();
                   
                    Event ev = new Event(idE, nom, réseau, commentaire);
                   
                    return ev;
            }
           
            /********************************
             *      Accès à la Base de Données  *
             ********************************/

            protected abstract void   exec    (String sql);
           
            protected abstract ResultSet query      (String sql);
    }


    Et le code de la Classe MySQL qui étend la Classe BDD, et qui permet d'acceder à une BDD MySQL (j'ai une autre classe Access, qui elle semble marcher..).
    package Persistant;

    import java.sql.*;

    public class Mysql      extends BDD {
           
            /******************
             *      Constructeur  *
             ******************/

            public    Mysql     (String host, String base, String login, String mdp) {
                    super(host, base, login, mdp);
            }
           
            public    Mysql     (String base, String login, String mdp){
                    super("//localhost:3306/", base, login, mdp);
            }
           
            /*********************************
             *      Connection/Deconnection BDD  *
             *********************************/

            protected       void      connecter() {
                    try {
                            Class.forName("com.mysql.jdbc.Driver");
                            connection = DriverManager.getConnection("jdbc:mysql:"+host+base,login,password);
                            statement = connection.createStatement();
                            System.out.println("Connexion Mysql Réussie.");
                    }
                    catch (SQLException e) {
                            System.err.println("Connexion Mysql Echouée.");
                    }
                    catch (ClassNotFoundException e) {
                            System.err.println("Pilote Mysql non trouvé.");
                    }
            }
           
            protected       void      deconnecter() {
                    try {
                            connection.close();
                            System.out.println("Déconnexion Mysql Réussie.");
                    }
                    catch (SQLException e) {
                            System.err.println("Déconnexion Mysql Echouée.");
                    }
            }
           
            /********************************
             *      Accès à la Base de Données  *
             ********************************/

            protected       void      exec(String sql) {
                    try {
                            statement.executeUpdate(sql);
                            System.out.println("   Requete -> succès :\n      " + sql);
                    }
                    catch (SQLException e) {
                            System.err.println("   Requete -> erreur :\n      " + sql);
                    }
            }
           
            protected       ResultSet      query(String sql) {
                    try {
                            res = statement.executeQuery(sql);
                            System.out.println("   Requete -> succès :\n      " + sql);
                    }
                    catch (SQLException e) {
                            System.err.println("   Requete -> erreur :\n      " + sql);
                    }
                    return res;
            }
    }


    En fait, je ne sais pense pas que dans le code BDD que se situe le problème... mais plutot dans le méthode query de MySQL, néanmoins il peut y avoir un problème de driver utilisé... En effet, j'utilise le driver mysql disponible dans le package com.mysql.jdbc.*; et dans le classe BDD, je traite le Resultat de la requete comme s'il était un ResultSet du package java.sql.*; ...
    • Partager sur Facebook
    • Partager sur Twitter
      26 novembre 2006 à 15:26:09

      Merci pour l'aide qui me fut apportée...

      En fait, il s'agissait d'une bête erreur, je tentais de récupérer la chaine 0 d'un ResultSet...

      Or, pour pas faire comme tout le monde, et surtout comme les tableaux où la première case est à l'index 0, dans un resultSet la première case est à l'index 1...
      • Partager sur Facebook
      • Partager sur Twitter

      [JAVA] MySQL récupérer une requete...

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown