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 :

jdbc oracle - connexion impossible


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 34
    Points
    34
    Par défaut jdbc oracle - connexion impossible
    Bonjour,
    j'ai consulté sur le Net, beaucoup d'exemples pour la connexion de java à oracle, mais mon application ne fonctionne toujours pas. J'en conclue que le problème se pose de mon côté.
    Situation:
    - Les fichiers ojdbc5.jar, ojdbc5_g.jar, ojdbc6.jar, ojdbc6_g.jar, sont dans le même répertoire que mes codes java

    - Version oracle: 10G R2

    - J'ignore le nom de la BD, je suppose qu'elle se nomme "oracle". J'y accède pour y créer des tables et des vues.

    - Le message retourné est "La classe n'est pas trouvée", (message de mon catch).

    Voici le code du fichier qui doit accéder à la
    BD:


    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
     
    // Enregistrement d'un client dans la bd
     
     
     
    import java.sql.*;
     
     
    class Lst_Client{
     
        //Lst_Client(){}
     
     
    public static void main(String[] args) throws SQLException{
     
    String url = "jdbc:oracle:thin:@localhost:1521:oracle"; // port=1521 en général
     
     
    String utilisateur = args[0];
     
     
    String mdp = args[1];
     
     
    int nb_col;
     
     
    String sql = "select * from client";
     
     
    Connection connexion = null;
     
     
    try{
     
    Class.forName("oracle.jdbc.OracleDriver");
     
     
    connexion = DriverManager.getConnection(url, utilisateur, mdp);
     
     
    Statement requete = connexion.createStatement();
     
     
    ResultSet resultat = requete.executeQuery(sql);
     
     
     
    catch(SQLException sqle){
     
    System.out.println("La requête contient une erreur !");
     
    }
     
     
     
    catch(ClassNotFoundException cnfe){
     
    System.out.println("La classe n'est pas trouvée.");
     
    }
     
     
    catch(Exception e){
    	    System.out.println("Autre type d'erreur dans le programme : ");
     
     
    e.printStackTrace();
     
    }
     
     
     
    finally{
     
     if(connexion!=null){
     
    try{connexion.close();
    }
     
     
    catch(Exception e){
     
    e.printStackTrace();
    }
    }
     
     
    }
     
     
    }
     
    }
    Merci d'avance de votre aide!

    Nono

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    mettre le jar dans le meme dossier que tes sources ne sert à rien, il ne font pas pour autant partie du classpath d'exécution, d'ou ton ClassNotFoundException.

    Pour inclure la librairie dans ton classpath, ca dépend de la manière dont tu lance ton application. Est-ce que tu la lance en ligne de commande, dans un ide, inclue tu tes classes dans un jar avec un manifest?


    Si t'es en ligne de commande, typiquement, la commande sera la suivante:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp bin/:lib/ojdbc16.jar:lib/autreLirairieEventuelle.jar mon.package.MaClasse
    Les : seront à remplacer éventuellement par le séparateur de chemin de ton OS.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 34
    Points
    34
    Par défaut
    En effet, tu as deviné juste, je lance le javac et le java en ligne de commande sous linux SUSE 10. Editeur=emacs.
    Pourtant j'ai essayé ce que tu me conseille, comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javac -cp /opt/oracle/MonRep/ojdbc6.jar -d /opt/oracle/MonRep Lst_Client.java
    Mais là, à l'exécution du java,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -cp /opt/oracle/MonRep/Lst_Client Utilisateur MotDePasse
    , il me dit "main class Lst_Client not found". J'ai pourtant respecté la casse de la classe ainsi que l'orthographe, mais il ne la voit pas!
    Merci de m'en dire un peu plus!

    Nono


    Citation Envoyé par tchize_ Voir le message
    mettre le jar dans le meme dossier que tes sources ne sert à rien, il ne font pas pour autant partie du classpath d'exécution, d'ou ton ClassNotFoundException.

    Pour inclure la librairie dans ton classpath, ca dépend de la manière dont tu lance ton application. Est-ce que tu la lance en ligne de commande, dans un ide, inclue tu tes classes dans un jar avec un manifest?


    Si t'es en ligne de commande, typiquement, la commande sera la suivante:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp bin/:lib/ojdbc16.jar:lib/autreLirairieEventuelle.jar mon.package.MaClasse
    Les : seront à remplacer éventuellement par le séparateur de chemin de ton OS.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp /opt/oracle/MonRep/Lst_Client Utilisateur MotDePasse
    Là, tu n'a pas mis ojdbc dans le classpath (comme je l'ai montré) ni le dossier de tes classes compilées (dans mon cas bin/) et tu a mélangé le chemin d'accès dans le classpath (/opt/oracle/MonRep) avec le nom de la class (Lst_Client).

    Dans ton cas on devrais avoir quelquchose dans ce gout là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp /opt/oracle/MonRep:/opt/oracle/lib/java/ojdbc6.jar Lst_Client Utilisateur MotDePasse

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 34
    Points
    34
    Par défaut
    Bon, ok, au moins, c'est plus clair dans mon esprit. Il reste à mettre de l'ordre dans tout ça et je posterai le résultat.
    Je vais commencer à séparer (ça fait plus ordonné):
    - les classes dans /opt/oracle/MonRep/bin,
    - Les .jar dans /opt/oracle/MonRep/lib,
    - les sources dans /opt/oracle/MonRep/.

    Un javac comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javac -cp /opt/oracle/MonRep/lib/ojdbc6.jar -d /opt/oracle/MonRep/bin Lst_Client.java
    Puis je lancerai ma classe avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -cp /opt/oracle/MonRep/bin:/opt/oracle/MonRep/lib/ojdbc6.jar Lst_Client Utilisateur MotDePasse
    Merci déjà d'avoir éclairci ces points.

    Nono
    Citation Envoyé par tchize_ Voir le message
    Là, tu n'a pas mis ojdbc dans le classpath (comme je l'ai montré) ni le dossier de tes classes compilées (dans mon cas bin/) et tu a mélangé le chemin d'accès dans le classpath (/opt/oracle/MonRep) avec le nom de la class (Lst_Client).

    Dans ton cas on devrais avoir quelquchose dans ce gout là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp /opt/oracle/MonRep:/opt/oracle/lib/java/ojdbc6.jar Lst_Client Utilisateur MotDePasse

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 34
    Points
    34
    Par défaut
    Bonjour,
    pour des raisons particulières, je fait maintenant mon programme sous windows XP au lieu de linux. Là, j'utilise jdk 1.5. Donc, à partir de cmd.exe, je lance:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javac -cp e:\developpement\java\MonRep\lib\ojdbc6.jar;e:\developpement\java\MonRep -d e:\developpement\java\Monrep\bin Lst_Client.java
    ,
    j'ai le message:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Can not read Lst_Client.java
    Pourtant, ce fichier se trouve bien dans e:\developement\java\MonRep\. Sauriez-vous pourquoi javac ne parviens pas à lire le fichier?
    Merci de votre coup de mains parce que ça devient vraiment bizarre!

    bonne soirée!



    Citation Envoyé par tchize_ Voir le message
    Là, tu n'a pas mis ojdbc dans le classpath (comme je l'ai montré) ni le dossier de tes classes compilées (dans mon cas bin/) et tu a mélangé le chemin d'accès dans le classpath (/opt/oracle/MonRep) avec le nom de la class (Lst_Client).

    Dans ton cas on devrais avoir quelquchose dans ce gout là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp /opt/oracle/MonRep:/opt/oracle/lib/java/ojdbc6.jar Lst_Client Utilisateur MotDePasse

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Te trouve tu bien dans le répertorie e:\developement\java\MonRep\ au moment ou tu lance la commande? Le nom du fichier .java n'est pas extrait du classpath de javac, le classpath sert à trouver les classes déjà compilées dont dépendent les classes à compiler.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 34
    Points
    34
    Par défaut
    En effet, non je ne suis pas dans le répertoire où se trouve la source java. En fait, je n'y parviens pas à partir de la console cmd. Par défaut, celle-ci est dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e:\Documents and Settings\...
    Le mieux que je parviens à faire, c'est de remonter jusqu'à c:\ grâce à Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cd e:\developpement\java\MonRep
    n'a aucun effet. C'est pour cela que j'essayais de lancer la source à distance. Je vais essayer alors de spécifier le chemin entier pour la source aussi, comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javac -cp e:\developpement\java\MonRep\bin;e:\developpement\java\MonRep\bin -d e:\developpement\java\MonRep\bin e:\developpement\java\MonRep\Lst_Client.java
    Evidemment, si quelqu'un saurait comment passer du c:\ à e:\ avec cmd, je suis preneur!
    Merci d'avance à tous!



    Citation Envoyé par tchize_ Voir le message
    Te trouve tu bien dans le répertorie e:\developement\java\MonRep\ au moment ou tu lance la commande? Le nom du fichier .java n'est pas extrait du classpath de javac, le classpath sert à trouver les classes déjà compilées dont dépendent les classes à compiler.

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Citation Envoyé par forumcpp_nono Voir le message
    Evidemment, si quelqu'un saurait comment passer du c:\ à e:\ avec cmd, je suis preneur!
    Merci d'avance à tous!

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 34
    Points
    34
    Par défaut
    ah oui, c'est vrai, le DOS est un peu loin! De toutes les façons, en mettant le chemin complet de la source, le message "cannot read" a disparu. En effet, j'appelle le javac avec tous ces paramètres dans le fichier javac.bat, puis j'ai renseigné la variable d'environnement PATH de windows avec le chemin des sources et du .bat: e:\developpement\java\MonRep\
    Merci de m'avoir emmené jusque-là. Je tente maintenant de lire le contenu de la base, si j'y parviens, je mettrai "Résolu" au message ;-)

    Noël

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 34
    Points
    34
    Par défaut
    bonjour,
    cette fois, je n'ai aucun message, ni à la compilation, ni à l'exécution. cependant, lors de l'exécution, le disque dur se met à faire un bruit qui ressemble à lorsqu'il y a une boucle infinie. et je n'ai aucune données reçue de la bd qui s'afiche sur l'écran. et pourtan, svp, voici le petit code:
    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
     
    // Liste des clients dans la bd
     
    import java.sql.*;
     
    class Lst_Client{
     
        Lst_Client(){}
     
        public static void main(String[] args) throws SQLException{
    	String url = "jdbc:oracle:thin:@localhost:1521:oracle"; // port=1521 en général
     
    	String utilisateur = args[0];
     
    	String mdp = args[1];
     
    	String sql = "select * from client";
     
    	Connection conn = null;
     
    	Statement requete = null;
     
    	try{
    	    Class.forName("oracle.jdbc.OracleDriver");
     
    	conn = DriverManager.getConnection(url, utilisateur, mdp);
     
    	requete = conn.createStatement();
     
    	ResultSet resultat = requete.executeQuery(sql);
     
       while(resultat.next()){
     
    	System.out.println(resultat.getString(1) + " "
    + resultat.getString(3) + " " 
    + resultat.getString(2) + " "
    + resultat.getString(4) + " "
    + resultat.getString(5) + " "
    + resultat.getInt(6) + " "
    + resultat.getString(7) + " "
    + resultat.getString(8) + " "
    + resultat.getString(9) + " "
    + resultat.getString(10) + " "
    + resultat.getString(11));
          }
       }
     
    	catch(SQLException sqle){
    	    System.out.println("La requête contient une erreur !");
    	}
     
    	catch(ClassNotFoundException cnfe){
    	    System.out.println("La classe n'est pas trouvée.");
    	    }
     
    	catch(Exception e){
    	    System.out.println("Autre type dans le votre programme : ");
     
    	    e.printStackTrace();
    	}
     
    	finally{
         if(requete != null){
         try{requete.close();}
        catch(Exception e){
             e.printStackTrace();
       }
       } // Fin if
     
    	    if(conn != null){
           try{conn.close();} 
    	      catch(Exception e){
           e.printStackTrace();
           }     
        } // Fin if
    	   } // Fin finally
      } // Fin main
    } // Fin de la classe
    Y voyez-vous une erreur qui provoquerait ce bruit de surchauffe?
    Citation Envoyé par forumcpp_nono Voir le message
    ah oui, c'est vrai, le DOS est un peu loin! De toutes les façons, en mettant le chemin complet de la source, le message "cannot read" a disparu. En effet, j'appelle le javac avec tous ces paramètres dans le fichier javac.bat, puis j'ai renseigné la variable d'environnement PATH de windows avec le chemin des sources et du .bat: e:\developpement\java\MonRep\
    Merci de m'avoir emmené jusque-là. Je tente maintenant de lire le contenu de la base, si j'y parviens, je mettrai "Résolu" au message ;-)

    Noël

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    tu lance comment ton application? Et il y a combien d'entrée dans la base de donnée?

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/02/2010, 02h02
  2. Réponses: 4
    Dernier message: 22/09/2006, 14h36
  3. [connexion jdbc oracle] log full
    Par agougeon dans le forum JDBC
    Réponses: 8
    Dernier message: 13/07/2006, 11h57
  4. [Jdbc et postgresql ] connexion impossible a la base
    Par tasdorjtador dans le forum JDBC
    Réponses: 6
    Dernier message: 11/05/2005, 21h19
  5. [jdbc] connexion impossible à sql server
    Par hari dans le forum Eclipse Java
    Réponses: 9
    Dernier message: 01/04/2005, 18h27

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