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 :

[Derby] Problème de connexion


Sujet :

JDBC Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Points : 241
    Points
    241
    Par défaut [Derby] Problème de connexion
    Bonjour à tous,

    Je suis entrain de tester une base de données Derby sous Netbeans.
    Lorsque je lance la connection avec le clic droit de la souris sur la base de données, aucun problème ..celle - ci se connecte et je peux saisir des données..

    J'ai fait le choix d'utiliser Derby pour pouvoir utiliser cette base de donnée en mode embarqué.
    Seulement lorsque je crée le code programme de connection à cette base de données, j'ai à chaque fois un refus de connection..
    Message : " l'erreur lors de la connexion au serveur localhost sur le port 1527 a émis le message Connexion refusée. "

    Je lance la connection manuellement à ma base de donnée
    Puis je me déconnecte manuellement à cette base...et que par la suite j'effectue un "Run" du programme uniquement à base de mon code java ..., la connection réussie.
    Bien qu'ayant déconnecté manuellement la base de données en ayant fait un clic droit avec la souris sur le drivers jdbc:derby ..

    Je quitte le programme ainsi que netbeans, tout en pensant que mon code est bon et que je n'ai plus besoin de lancer la connection manuellement..
    Or, lorsque je relance Netbeans pour continuer à travailler sur mon programme,j'ai à nouveau le message de connection refusée..

    Est ce que quelqu'un pourrait m"aider ou aurait une idée ?
    Ci après le code de connection.
    Merci d'avance..
    a+


    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
     
     String driver = "org.apache.derby.jdbc.ClientDriver";
          String dbName ="Test";
     
     
     
           Class.forName(driver);
     
     
           String login ="admin";
           String password = "admin";
     
           String host = "jdbc:derby:/" + dbName;
     
     
     
     
          Connection con = DriverManager.getConnection(host,login,password);
     
            }
            catch (SQLException ex) {
     
     
                 JOptionPane.showMessageDialog(null, " Connection refusée "+ex.getMessage());
        }

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut
    Pour fonctionner, la base doit être prise en charge par un serveur.
    C'est ce que fait NetBeans quand tu demandes une connexion.

    Dans une application embarquée, on démarre d'abord un serveur embarqué : "EmbeddedDriver"
    qui va gérer les accès à cette base (comme pour les "grosses" bases Oracle, MySql, ...)

    Après quoi, on peut se connecter à la base avec "ClientDriver"
    pour faire les opérations habituelles de JDBC.

    Tu dois donc avoir un code d'initialisation du genre :
    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
            try {
                Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
            } catch (InstantiationException ex) {
                ex.printStackTrace();
            } catch (IllegalAccessException ex) {
                ex.printStackTrace();
            } catch (ClassNotFoundException ex) {
                JOptionPane.showMessageDialog(null,"org.apache.derby.jdbc.EmbeddedDriver pas trouvé ...");
                System.exit(1);
            }
            try {
                Class.forName("org.apache.derby.jdbc.ClientDriver");
            } catch (ClassNotFoundException ex) {
                JOptionPane.showMessageDialog(null,"org.apache.derby.jdbc.ClientDriver pas trouvé ...");
                System.exit(1);
            }
     
           String url = "jdbc:derby:mabase";
           String login ="admin";
           String password = "admin";      
     
            try {
                Connection conn = DriverManager.getConnection(url,login ,password );
            } catch (SQLException ex) {
                ex.printStackTrace();
                JOptionPane.showMessageDialog(null,"Erreur de connexion à la base " + url);
                System.exit(1);
            }

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Points : 241
    Points
    241
    Par défaut
    Merci pour ta réponse et ton aide Népomucène...

    J'avais songé au "EmbeddedDriver"...sauf qu'au moment de la saisie de la ligne suivante en enlevant les guillemets : org.apache.derby.jdbc.EmbeddedDriver , Netbeans ne propose pas la complétition du code après le point de "jdbc" du mot clef EmbeddedDriver...( bien entendu, je rajoute les guillemets dans cette ligne ).


    Néanmoins j'ai testé ton code et j'ai effectivement le message "...derby.jdbc.EmbeddedDriver ... " non trouvé, et impossible d'aller plus loin..

    Encore merci.
    a+

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut
    Cela m'a tout l'air d'un problème de bibliothèque.
    Ton application doit avoir à sa disposition :
    - derby.jar
    - derbyclient.jar
    à vérifier dans le classpath

    De mon coté, je les ais ajoutés à mon projet NetBeans, comme ça ils sont ajoutés
    automatiquement dans le répertoire lib de la distribution (répertoire dist du projet)

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Points : 241
    Points
    241
    Par défaut
    Dans la partie "Librairie" du projet j'ai bien le derbyclient.jar qui y figure..
    J'ai rajouté hier soir la librairie qui porte le nom " java db embedded " par prudence..
    Faut t'il rajouter ces librairies ailleurs ?.

    Merci à toi

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut
    Comme je te disais plus haut, dans mon projet j'ai bien les jar :
    - derby.jar
    - derbyclient.jar
    Ce sont deux fichiers jar qui doivent se trouver dans le classpath pour que l'application fonctionne en mode embarqué

    Il faut que tu vérifies que la librairie "java db embedded" contient bien derby.jar

    De toutes façons, au bout du compte, il faut que derby.jar soit présent dans le répertoire lib

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Points : 241
    Points
    241
    Par défaut
    Oui tout à fait,
    dans l'onglet "Projects" j'ai une partie "libraries" et quand je clique sur la flèche pour le détail des librairies apparaît ( bon je ne marque pas tout le texte pour simplifier..) :
    - Swing Application Framework appframewaork
    - Swing Application Framcework - swing-worker
    - Beans Binding
    - Toplink Essantials
    - Toplink Essantials
    - derbyclient.jar <---------------------
    - Cdc Java Embedded Client Build
    - Mysql JDBC Driver
    - JDK 1.7 ( default )

    et quand je déroule la flèche du "derbyclient.jar " apparaît la liste :
    - org.apache.derby.client
    - org apache derby.client.am
    etc... ( idem je ne marque pas toute la liste pour raison pratique )

    Par contre tu cites :
    Il faut que tu vérifies que la librairie "java db embedded" contient bien derby.jar
    Je n'ai pas de librairie " java db embedded" contenant le derby.jar...
    Mon "derby.jar" est direct dans la librairie..comme indiqué plus haut.. Je suppose que c'est la même chose .?

    Pour information j'utilise Netbeans 7.0.1 sous environnement Linux et que j'ai crée ma base directement sous netbeans sous l'onglet " Services "..et non par programmation. je pense que ça n'a rien à voir ..?

    a+

  8. #8
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut
    On peut créer la base par NB ce n'est bien sûr pas un problème

    Par contre, à l'évidence, tu n'as pas derby.jar
    du coup, pas de serveur Derby ...

    Donc, c'est très simple, il faut aller le télécharger sur le site d'Apache
    (je te laisse chercher, je suis sur que tu vas y arriver )
    et l'ajouter dans les librairies de ton projet

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Points : 241
    Points
    241
    Par défaut
    Je suis allé sur le site d'Apache.. J'ai téléchargé la librairie " db-derby-10.8.2.2.-bin.zip"..
    De cette archive "db-derby-10.8.2.2-bin.zip" j'ai copié l'ensemble de la lib qui s'y trouvait vers le répertoire "lib" du "dist" que génère Netbeans..
    Dans l'onglet " Progects" de Netbeans je rajoute par clic droit de la souris le "Add/Jar Folder" de cette lib..
    Apparaît un "derby.jar" sous les autres noms de l'onglet "Libraries" ( mais j'ai déjà une librarie d'office nommé "derbyclient.jar")..
    Je lance un "run" ..et j'ai toujours le même problème et messages d'erreurs..
    J'ai du mal à comprendre à devoir télécharger dans ce cas de figure une librairie derby à partir d'Apache, alors que Netbeans me permet de créer sans ligne de code une base de donnée Derby..c'est qu'elle est y d'office ?

    Je ne sais pas si la manipulation que j'ai faite est la bonne, mais bon ça ne fonctionne pas chez moi..

    Encore merci.
    a+

  10. #10
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut
    Le répertoire dist et son sous-répertoire lib
    sont destinés à contenir l'application java à distribuer (d'où le nom de "dist")

    Ces 2 répertoires sont détruits et reconstruits par NetBeans à chaque compilation (clean and build).

    donc ce n'est pas là qu'il faut placer le derby.jar

    Le mieux est de créer un répertoire spécifique pour les bibliothèques Derby ; par exemple :
    C:\Program files\Java\Derby
    dans lequel tu places :
    - derby.jar
    - derbyclient.jar

    Ensuite dans NetBeans :
    - tu vas dans les propriétés de ton projet (clic-droit sur le projet)
    - cliques sur bibliothèques (libraries)
    - à droite tu as un bouton "ajouter un fichier jar ou un dossier" (add jar file or folder)
    - tu vas sélectionner : C:\Program files\Java\Derby\derby.jar et C:\Program files\Java\Derby\derbyclient.jar

    Du coup, Netbeans va utiliser ces bibliothèques et automatiquement les ajouter à dist/lib lors de la compilation.
    Tu ne devrais donc plus avoir de problème pour charger "EmbeddedDriver"

    En fait, c'était un problème de manipulation de NetBeans ...

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Points : 241
    Points
    241
    Par défaut
    Après un silence...
    A force de "mélanger" les codes, les différentes librairies d"une base de données..d'utiliser l'assistant de création d'un projet avec base de données..etc..,
    J'ai supprimé tout supprimé ainsi que désinstallé et réinstallé Netbeans...

    J'ai donc crée ma base de données en spécifiant bien un emplacement de celle -ci, J'ai installé les librairies dans un répertoire séparé de celui de "dist", j'ai intégré les librairies que tu m'entionnes..etc..

    Légère ammélioration, car cette fois ci Netbeans me propose la complétition du mot clef "Embedded" pour la Class.forname ("org.apache.derby.jdbc.EmbeddedDriver")..

    Par contre au moment du "Run" j'ai le message d'erreur :
    java.sql.SQLException: No suitable driver found for /home/telemak/Prog/Java/BasesDerby/Test"..
    et donc impossible d"avoirs la connection à la base de données...
    Lorsque j'effectue un connect manuellement dans l'onglet service de ma base de données ..la connection se lance sans problèmes..

    S'agit t'il à nouveau d'un problème de librairie ?

    a+

  12. #12
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut
    on peut voir le code ?

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Points : 241
    Points
    241
    Par défaut
    Voilà :

    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
     public static void main(String[] args) {
     
     
            // Lignes suivantes rajoutées :
     
            try {
                Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
     
           } catch (InstantiationException ex) {
                ex.printStackTrace();
           } catch (IllegalAccessException ex) {
                ex.printStackTrace();
           } catch (ClassNotFoundException ex) {
               JOptionPane.showMessageDialog(null, "EmbeddedDrivers non trouvé");
                System.exit(1);
            }
     
            try {
              Class.forName("org.apache.derby.jdbc.ClientDriver");
            } catch ( ClassNotFoundException ex) {
               JOptionPane.showMessageDialog(null, "derby.jdbc.ClientDriver non trouvé...");
                System.exit(1);
           }
     
            String url = "/home/telemak/Prog/Java/BasesDerby/Test";
            String login = "admin";
            String password = "admin";
            try {
     
     
                Connection conn = DriverManager.getConnection(url,login,password);
            } catch (SQLException ex) {
                ex.printStackTrace();;
                JOptionPane.showMessageDialog(null," Connection refusée "+ ex);
                System.exit(1);
     
     
            }
     
            launch(TestBase.class, args);
        }
    }

  14. #14
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut
    et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String url = "jdbc:derby:/home/telemak/Prog/Java/BasesDerby/Test";
    ?

  15. #15
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut
    Il faut distinguer 2 cas :
    1) tu es en train de développer ton appli
    donc NetBeans est ouvert, et le serveur intégré à NetBeans prend en charge la base Derby
    (voir dans NetBeans, onglet services, Java DB)

    Pour utiliser la base TEST ton url doit être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jdbc:derby://localhost:1527/TEST

    2) tu utilises ton application en mode embarqué
    Par exemple, la base se trouve sur une clé USB et le chemin est :
    F:\TEST
    Pour utiliser la base TEST ton url doit être :

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Points : 241
    Points
    241
    Par défaut
    Après moult essais..ça fontionne enfin... ouf...!

    En résultat de ta dernière intervention indiquant :
    jdbc:derby://localhost:1527/TEST
    et
    jdbc:derby:F:\\TEST
    ,j'ai modifié le chemin tel que :

    String url = "jdbc:derby:/home/telemak/Prog/Java/BasesDerby/Test";
    , j'ai également modifié l'accès pour tester sous windows et ça fonctionne..( en tous les cas pour l'instant..)

    En fait je ne mentionne pas la partie ":1527" du chemin d'accès...
    Je déleste pour l'instant le sujet ..en attendant d'avoir effectué des tests supplémentaires..avant de mettre "résolu"...

    Mille merci pour ton dévouement..
    A+

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Points : 241
    Points
    241
    Par défaut
    Problème résolu pour moi..
    Encore Merci
    a+

  18. #18
    Membre actif
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Points : 241
    Points
    241
    Par défaut
    Bonjour,
    Je pensais le problème réglé...mais je ressort le sujet...

    Quand je rajoute une JTable à laquelle j'associe en "'Binding" ma base de données..il me trouve les différents champs de ma table que je souhaites afficher dans cette JTable..

    Or, dès que j'effectue un "run" de mon programme... rebelotte..j'ai le message d'erreur :
    java.sql.SQLNonTransientConnectionException: java.net.ConnectException : l'erreur lors de la connexion au serveur localhost sur le port 1527 a émis le message Connexion refusée.
    at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
    at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
    at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)
    Donc à nouveau connection refusée..
    Je ne comprends pas que le simple fait d'avoir rajoutée un JPanel, puisse me créer à nouveaux ces soucis..

    Si j'enlève ma JTable et que j'effectue un "run" aucun problème de message d'erreur..
    Et si pour tester,je modifie mon chemain d'accès à la base de données ..j'ai bien un message d'erreur qui me le signifie..je suppose que ma base de données devrait être fonctionelle, bien que n'ayant pas encore codé ou intégrés d'autres composant qui me permettrons d'utiliser la base de données...

  19. #19
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut
    Tu peux décrire comment tu fais ton binding ?

  20. #20
    Membre actif
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Points : 241
    Points
    241
    Par défaut
    - Je dépose une JTable sur la form.
    - Clic droit sur la JTable.
    - Choix "Bind", puis "Elements".
    - A droite sur le bouton " Import Data to Form ", je sélectionne ma base.
    Une nouvelle fenêtre s'ouvre et je choisis ma DatabaseConnection qui me propose ensuite en-dessous ma table (il n'y en a qu'une dans ma base..).
    - Je sélectionne mes champs que je souhaites voir apparaître dans ma JTable.
    - Je valide le tout par le bouton "OK".

Discussions similaires

  1. Problème de connexion a une base Derby
    Par mister_hassan dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 04/10/2007, 14h11
  2. [ Oracle 9ias / 10g] problème de connexion
    Par Boosters dans le forum JDeveloper
    Réponses: 2
    Dernier message: 20/01/2004, 17h23
  3. Problème de connexion au serveur MYSQL
    Par ETOKA dans le forum Outils
    Réponses: 2
    Dernier message: 27/11/2003, 09h28
  4. Réponses: 11
    Dernier message: 13/10/2003, 14h48
  5. problème de connexion 2 PC
    Par guitalca dans le forum Développement
    Réponses: 3
    Dernier message: 22/09/2003, 14h04

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