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

JDBC Java Discussion :

Compilation, plus de connexion


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Compilation, plus de connexion
    Bonjour,

    Tous d'abord, je suis débutant en java et donc mon code ne doit pas être le plus propre possible ^^

    J'ai créer un programme se connectant a une bdd Mysql distante et recuperant/ecrivant des données.
    Lorsque je le compile et l'execute avec Eclipse, tous marche très bien et je peux effectuer mes opérations sans problème.

    Par contre, si je crée un fichier .jar ou que j'execute ma Main.class, il semblerait que la connexion ne se fasse plus et je ne peux plus rien faire sur la bdd.

    Je vous joint le code de ma classe s'occupant de la partie bdd:
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    package bdd;
     
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
     
    public class BDD {
    	private Connection conn;
    	private Statement stmt=null;
    	private ResultSet rs=null;
    	private int resultat;
    	private FileInputStream in;
    	private String url;
    	private String user;
    	private String password;
     
    	public BDD(){
    		this.initialisation();
    		this.connexion();
    	}
     
    	// Initialise la connexion à la BDD
    	public boolean initialisation(){
    		// Récupération des variables stockées dans db.properties
    	    Properties prop = new Properties();
    	    try{
    	    		in = new FileInputStream("bdd/db.properties");
    	    		prop.load(in);
    	    	    in.close();
    	    }catch(IOException e){
    	    		System.out.println("Erreur d'ouverture du fichier: "+e);
    	    }
    	    url = prop.getProperty("url");
    	    user = prop.getProperty("user");
    	    password = prop.getProperty("password"); 
     
    	    // Chargement du driver de connexion à la BDD
    		try{
    			Class.forName("org.gjt.mm.mysql.Driver").newInstance();
    			return true;
    		} catch(Exception e) {
    			System.err.println("Erreur de chargement du driver :" + e);
    			return false;
    		}
    	}
     
    	// Se connecte à la BDD
    	public boolean connexion(){
    		try {
    		    conn = DriverManager.getConnection("jdbc:mysql://"+url, user, password);
    		    return true;
    		} catch (SQLException ex) {
    			System.out.println("SQLException: " + ex.getMessage());
    		    System.out.println("SQLState: " + ex.getSQLState());
    		    System.out.println("VendorError: " + ex.getErrorCode());
    		    return false;
    		}
    	}
     
    	// Récupère les valeurs dans une table de la BDD
    	public ResultSet reqSelect(String requete){
    		try{
    			stmt=conn.createStatement();
    			rs=stmt.executeQuery(requete);
    			return rs;
    		} catch (SQLException e){
    			System.out.println("SQLException: " + e.getMessage());
    		    System.out.println("SQLState: " + e.getSQLState());
    		    System.out.println("VendorError: " + e.getErrorCode());
    			return rs;
    		}
    	}
     
    	// Récupère les valeurs dans une table de la BDD
    	public int reqModification(String requete){
    		try{
    			stmt=conn.createStatement();
    			resultat=stmt.executeUpdate(requete);
    			return resultat;
    		} catch (SQLException e){
    			System.out.println("SQLException: " + e.getMessage());
    		    System.out.println("SQLState: " + e.getSQLState());
    		    System.out.println("VendorError: " + e.getErrorCode());
    			return resultat;
    		}
    	}
     
    	// Afficher les résultats de la requête
    	public void creerTable(){
    		/*CREATE TABLE `cd` (
    				`id_cd` INT( 5 ) AUTO_INCREMENT,
    				`nom_cd` VARCHAR( 50 ) NOT NULL ,
    				`num_cd` INT( 5 ) NOT NULL ,
    				`description` VARCHAR( 200 ) NOT NULL ,
    				PRIMARY KEY ( `id_cd` )
    				);*/
    	}
     
    	// Vérifie si la table existe dans la BDD
    	public boolean existTable(String nom){
    		try{
    			DatabaseMetaData dma=conn.getMetaData();
    			rs = dma.getTables(null, null, nom, null);
    			System.out.println();
    			if(rs!=null) return true;
    			else return false;
    		} catch(SQLException e){
    			System.out.println("Erreur test existence table: "+e);
    			return false;
    		}
    	}
     
    }
    Merci d'avance,
    Kilay.

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Quand tu as une erreur, il est bon de nous la faire connaitre. C'est dur de t'aider sinon.

    Là je paries que ton erreur est un NoClassDefFoundError ??

    Si oui, déjà en faisant une recherche sur le forum, tu aurais trouvé tout de suite la réponse qui est : problème de classpath. Dans ce cas, en t'aidant de la FAQ, il faut que tu ajoutes le jar de ton driver à ton classpath.

    Si non, ben j'ai perdu mon pari ... dis nous quelle erreur tu rencontres ...

  3. #3
    Invité
    Invité(e)
    Par défaut
    J'avais bien ajouté le jar dans le classpath.

    Apparement, il faudrait ajouter dans le manifest le répertoire de mon jar.
    Je viens de le faire et cela ne change rien.
    Si je met le jar dans le repertoire de mon projet, cela marche, si je le met dans un repertoire different, la connexion ne se fait plus.

    P.S.: Comment peut on voir si un jar génère une erreur ?

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Ce n'est pas le répertoire du jar mais le jar qu'il faut mettre dans le classpath du manifest.
    Pour voir les erreurs, tu lances java -jar xxx.jar dans une fenêtre dos ...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci, en lancant le jar avec le terminal (je suis sur mac OSX), j'ai l'erreur Erreur de chargement du driver :java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

    Dans mon fichier MANIFEST.MF, j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Manifest-Version: 1.0
    Main-Class: main.Main
    Class-Path: ./lib/mysql-connector-java-5.1.0-bin.jar
    Sachant que mon arborescence est la suivante:
    /main/Main.java
    /lib/mysql-connector-java-5.1.0-bin.jar
    /bdd/BDD.java
    /gui

    Qui plus est, il ne trouve pas non plus mon fichiers de propriétés dans bdd/db.properties alors qu'il y est bien quand je decompresse le jar.

    C'est apparement le même problème que pour: http://www.developpez.net/forums/sho...=jar+connexion mais je n'arrive pas à le résoudre tous de même.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bon, d'après le lien suivant: http://glaforge.free.fr/weblog/index.php?itemid=20
    On ne peut "charger" une librairies ou un fichier properties à partir d'un jar.

    J'ai essayer les mettre en dehors et je n'ai plus le problème pour le fichier properties mais toujours la même erreur pour le driver.

    A noter que en exportant en applucation mac, tous marche très bien. Je pense que je vais garder cette solution.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/12/2006, 22h25
  2. [eVC++4] Mon appli ne compile plus
    Par Bason_sensei dans le forum Visual C++
    Réponses: 1
    Dernier message: 18/09/2006, 13h47
  3. [RESEAU] Plus de connexion Internet
    Par Arnaud F. dans le forum Dépannage et Assistance
    Réponses: 13
    Dernier message: 13/05/2006, 20h51
  4. Mon projet ne se compile plus :/
    Par Higestromm dans le forum MFC
    Réponses: 9
    Dernier message: 31/01/2006, 08h54
  5. Oracle 10g plus de connexion
    Par ced2004 dans le forum Connexions aux bases de données
    Réponses: 2
    Dernier message: 01/01/2006, 23h20

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