Page d'accueilFindIt !Contact Cahier Java

Cahier Java

 Forum Java

Ce forum est dédié à l'ouvrage Bien programmer en Java 7, ainsi qu'aux éditions précédentes des Cahiers du Programmeur Java.
Utilisez-le pour toute demande d'information supplémentaire ou pour toute suggestion au sujet de ces ouvrages.
Pour les informations relatives au Cahier du programmeur Swing, merci d'utiliser le forum qui lui est dédié.
Vous pouvez consulter ces forums librement. Pour y participer, inscrivez-vous tout d'abord.

Sujets Messages récents Identification Inscription
Messages du sujet Problème JDBC

Waxe

Membre depuis : 16 août 2006
Messages : 6
 16 août 2006 à 18:52
Bonjour,

A la page page 172, je ne comprends pas la partie 3 de la section Installer le driver JDBC.

J'ai fait la partie 1 et 2 et je dispose de easyphp.

J'ai testé la classe TestConnexionJDBC et j'ai l'exception Classe introuvable.

Pouvez vous m'aider s'il vous plaît ?

Merci

[Information du modérateur : la page 172 référencée par le message est dans la 1ère édition du Cahier Java]

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 19 août 2006 à 13:09
> J'ai testé la classe TestConnexionJDBC et j'ai l'exception Classe introuvable.

Si la classe com.mysql.jdbc.Driver est introuvable, cela signifie que le chemin du driver JDBC cité dans l'option -classpath est incorrect. Pour effectuer des tests, vous pouvez vous simplifier la vie en plaçant le fichier du driver JDBC dans le dossier jre/lib/ext du JDK, ce qui évite de le citer dans l'option -classpath.

Une fois passé ce problème, faites attention dans l'application TestConnexionJDBC de vous connecter à MySQL avec un login / password égal à "root" / "", car je crois qu'il est impossible de se connecter sans login avec la configuration par défaut d'EasyPHP.

---
Manu (moderator/modérateur)

Waxe

Membre depuis : 16 août 2006
Messages : 6
 22 août 2006 à 13:40
De retour de déplacement, j'ai pu refaire un test grâce à votre réponse. Je trouve formidable le fait que l'auteur d'un livre apporte son aide.

Pour info j'ai :

C:\j2sdk1.4.2_10 dans lequel il n'y a pas de dossier lib/ext.

J'ai essayé d'en créer un et de mettre mysql-connector-java-3.0.17-ga-bin.jar dedans mais sans succès. J'ai le même message qu'en le mettant dans le dossier lib à savoir "Classe Introuvable com.mysql.jdbc.Driver".

Pouvez vous m'aider s'il vous plaît ?

Pour la connexion par defaut sur EasyPHP, vous avez bien raison.

Cordialement




Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 22 août 2006 à 15:14
> Je trouve formidable le fait que l'auteur d'un livre apporte son aide.

Les questions posés par les lecteurs me permettent aussi d'améliorer le Cahier Java d'une édition à l'autre. Par exemple, la suggestion que je vous ai proposée a été ajoutée dans la 2nde édition. ;-)

> Pour info j'ai :
> C:\j2sdk1.4.2_10 dans lequel il n'y a pas de dossier lib/ext.

C'est dans le dossier jre/lib/ext et pas dans le dossier lib/ext !
---
Manu (moderator/modérateur)

Waxe

Membre depuis : 16 août 2006
Messages : 6
 22 août 2006 à 15:57
Je viens de mettre "mysql-connector-java-3.0.17-ga-bin.jar" dans C:\j2sdk1.4.2_10\jre\lib\ext et le message d'erreur est le même.

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 23 août 2006 à 09:32
Peut-être avez-vous plusieurs versions de Java installées sur votre machine ?
Quelle version est affichée par la commande "java -version" ?
---
Manu (moderator/modérateur)

Waxe

Membre depuis : 16 août 2006
Messages : 6
 23 août 2006 à 13:22
Java version 1.4.2_10

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 23 août 2006 à 14:24
Le PATH est peut-être positionné en priorité sur le dossier du JRE seul (en général le dossier du JRE est C:\Program File\jre... ou C:\Program File\Java\jre...). Dans ce cas, il faut ajouter le fichier du driver JDBC dans le dossier lib/ext du JRE.

Vous pouvez aussi revenir aussi sur la solution première proposée dans le livre en spécifiant un chemin correct pour le driver JDBC dans l'option -classpath. Il faut avoir une commande de la forme
  java  -classpath chemin vers les classes de test;chemin vers le driver JDBC com.eteks.test.TestConnexionJDBC

Les deux chemins cités dans l'option -classpath ne doivent pas avoir d'espace ou alors être entre guillemets, et il faut un point virgule sous Windows entre les deux chemins. Par exemple :
  java -classpath c:\test\classes;c:\test\lib\mysql-connector-java.jar com.eteks.test.TestConnexionJDBC

---
Manu (moderator/modérateur)

Waxe

Membre depuis : 16 août 2006
Messages : 6
 23 août 2006 à 14:44
Tout marche en mettant le driver dans C:\Program Files\Java\j2re1.4.2_10\lib\ext :-)

Le problème venait de ma confusion entre C:\Program Files\Java\j2re1.4.2_10 et C:\j2sdk1.4.2_10

Pouvez vous me donner la différence entre les deux ?

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 23 août 2006 à 20:16
Comme expliqué succinctement page 14, le JRE contient le minimum (JVM + classes de la bibliothèque standard) pour faire fonctionner un programme Java une fois compilé. C'est ce dont ont besoin les utilisateurs finaux d'une application Java. Quand on installe Java par http://java.com/ , c'est en fait le JRE qu'on installe.
Le JDK est un JRE qui contient en plus les outils (javac, javadoc...) pour développer en Java, les sources des classes de la bibliothèque standard et des démos. Comme ces outils sont pour certains eux-mêmes des classes Java, ils ont besoin du JRE, qui apparaît comme un sous répertoire jre du JDK.
Le programme d'installation du JDK propose par défaut d'installer le JDK avec ce sous répertoire jre et d'installer le JRE seul comme si vous étiez un simple utilisateur d'une application Java. Au final, vous avez donc deux JRE qui font plus ou moins doublon sur le disque ! C'est un peu bizarre tout cet espace disque perdu, mais historiquement c'est comme ça depuis très longtemps, et pour dire vrai, je n'en ai jamais cherché la raison fondamentale.

A l'avenir, tachez d'avoir un PATH qui ne référence que le JDK sinon vous risquez à chaque fois d'avoir le même problème. ;-)
---
Manu (moderator/modérateur)

Waxe

Membre depuis : 16 août 2006
Messages : 6
 23 août 2006 à 20:23
C'est compris.

Merci pour votre aide.

Cordialement

Waxe

Krusty

Membre depuis : 11 sept. 2006
Messages : 4
 11 sept. 2006 à 19:13
Bonjour,
je développe une applet qui doit faire un accès à une base de données.
La base de donnée est une BD mySql située sur le server de 123.fr

Je n'arrive pas à me connecter à ma BD : voici le code de la classe concernée :

[code]
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/nomDeLaBD";
Connection con = DriverManager.getConnection(url, login, password);
Statement statement = con.createStatement();
[/code]

En fait, je ne sais pas comment indiquer que ma BD est cituée sur le serveur de 132.fr : je ne suis pas sûr que le localhost soit approprié ...
A savoir que le code de l'applet est lui aussi sur le serveur de 123.fr (mais l'applet s'exécute normalement chez le client).

Merci d'avance pour votre aide.

PS :
Voici quelques infos supplémentaires :
pour aller gérer ma base de données, j'utilise le lien http://kgame.123.fr/012345/

Parametres mysql :
nom du serveur : localhost
nom de la base : kgame123fr
nom du compte : kgame123fr
mot de passe : xxxxxxxxxxxxx

Parametres ftp :
nom du serveur : kgame.123.fr
nom du compte : www.kgame.123.fr
mot de passe : xxxxxxxxxxxxx

PPS : java.sqlException: Unable to connect to any hosts due to exception java.security.accessControlException: access denied (java.net.socketPermission 127.0.0.1:3306 conect, resolve

PPPS : quand j'utilise l'url suivante : mon exception est dfifférente :
- url : "jdbc:mysql:kgame.123.fr/012345/localhost:3306/kgame123fr";
- Exception : Connection timed out

PPPPS : l'applet s'exécute chez le client : je suppose que c'est la cause de mon problème ; localhost ne peut pas fonctionner puisque la BD est sur le serveur alors que l'applet est chez le client : il faut donc trouver un moyen de dire au client que la BD est surle serveur

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 17 sept. 2006 à 09:10
Etes-vous sûr que la base de données sur kgame123fr est accessible depuis Internet ?
Les SGBD ne sont en général accessibles que depuis le serveur Web de l'hébergeur par sécurité.
Tentez déjà de vous y connecter avec une application Java classique.
---
Manu (moderator/modérateur)

Krusty

Membre depuis : 11 sept. 2006
Messages : 4
 28 sept. 2006 à 19:14
Le truc c'est comment faire en java pour me connecter à la BD ?
Il faut que l'appli java s'éxécute sur le serveur : donc il faut la lancer sur le serveur non ?
Hors ce n'est pas moi qui héberge ce serveur ? Comment faire ?

Krusty

Membre depuis : 11 sept. 2006
Messages : 4
 4 oct. 2006 à 20:48
J'ai résolu une partie du problème :

le serveur que l'on me fourni n'accepte pas java !

Je fais donc un page PHP qui fait des requêtes sur la BD mysql et ça marche !

Le problème maintenant est que depuis java, je n'arrive pas à transmettre la requête à PHP :(

Comment faire (si possible de manière à ce que l'utilisateur ne puisse pas voir les requêtes !!!)

Merci pour votre aide.

lulu_tsi

Ville : LE BARP
Membre depuis : 8 févr. 2007
Messages : 2
 8 févr. 2007 à 12:38
Salut Manu,
Jai acheté ton livre récemment (cahier du programmeur 3ème édition) et je dois avouer que ton bouqin m'a bcp aidé pour comprendre les arcanes de JAVA. J'ai un pb avec JDBC.
J'ai fait ce que tu as préconisé plus haut c'est-à-dire copier le connector téléchargé du site Mysql.fr hier (version 5.0.4) dans le répertoire c:\program files\java\jdk1.6.0\jre\lib\ext et j'ai toujours le même message class com.mysql.jdbc.Driver introuvable ...
J'utilise eclipse 3.2 pour les tests cela marchera peut-être en modifiant mon projet en y ajoutant le fichier connector.Après vrification ok ça marche mais quid lors du déploiement de mon projet. Car dans la boite cmd (console sous XP) cela ne fonctionne pas j'ai bien essayé d'ajouter CLASSPATH dans mes variables d'environnement ça empire plus rien ne fonctionne ni même un simple "Hello world" en mode texte. Javac renvoie des erreurs n'en parlons pas de l'interpréteur java ... Ma question est comment développer avec l'IDE et ensuite déployer mon application en utilisant CLASSPATH sur les ordinateurs qui exécuteront les modules JAVA.
Comment déclarer un bon CLASSPATH pour JDK 1.6.0 j'ai respecté les options standard de l'installe du JDK sun.

Merci de me répondre et bravo pour ton livre.
---
On danse ?

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 9 févr. 2007 à 13:06
> J'ai fait ce que tu as préconisé plus haut c'est-à-dire copier le connector
> téléchargé du site Mysql.fr hier (version 5.0.4) dans le répertoire
> c:\program files\java\jdk1.6.0\jre\lib\ext et j'ai toujours le même message
> class com.mysql.jdbc.Driver introuvable ...

Je pense que la commande java qui est lancée dans une fenêtre de commandes n'est pas celle de c:\program files\java\jdk1.6.0, mais plutôt celle de c:\program files\java\jre1.6.0. Essaie donc de recopier le driver dans le dossier lib\ext de ce dossier-là.
Je sais que cette organisation des dossiers jdk / jre où finalement on retrouve deux fois le jre est très bizarre, mais Sun persiste ainsi depuis des années, en pensant probablement qu'il est logique de séparer le jre de développement du jre par défaut...

> [...] mais quid lors du déploiement de mon projet.

Recopier le fichier du driver dans le dossier lib\ext du jre est une astuce de développeur pressé qu'il faut éviter de reprendre pour le déploiement.
Pour les utilisateurs finaux, préfère l'option -classpath de la commande java à la variable d'environnement CLASSPATH (voir page 222).
Si tu ne veux pas créer un fichier .bat qui contient la commande java parce que cela provoquera l'affichage d'une fenêtre de commande, tu peux créer un fichier .jar dont le fichier WEB-INF/MANIFEST.MF contient la classe de l'application, ou alors créer un raccourcis Windows qui appelle la commande javaw.
Attention, l'ajout de bibliothèque pour les applications Web se passe différemment (voir page 251).
---
Manu (moderator/modérateur)

lulu_tsi

Ville : LE BARP
Membre depuis : 8 févr. 2007
Messages : 2
 12 févr. 2007 à 11:05
Merci pour tes conseils ça fonctionne. Quand au déploiement j'aviserai le moment venu du problème. Un seul souci à la fois on avancerfa plus vite .....


Ludji
---
On danse ?

marceld

Membre depuis : 26 avr. 2007
Messages : 1
 25 avr. 2007 à 00:34
Bonjour Manu,

j'étais bloqué sur le TestConnexionJDBC (cahier 1.4 & 1.5, page 220), j'avais le message "classe com.mysql.jdbc.driver" introuvable.

Après avoir lu vos différentes interventions, j'ai résolu ce problème.

Un autre message s'est affiché: "connexion impossible: Access denied for user "@'localhost'(using password: NO).

J'utilise mySql avec Coldfusion, est-ce que mon mot de passe pour accéder à mySql n'est pas valable lorsque je travaille avec java? car en coldfusion, pour enregistrer mes bd, j'ai toujours utilisé le même mot de passe dans le "mysql command line client"

Comment faire pour avoir ma connexion en travaillant avec java s.v.p.?

Merci d'avance.

marceld

marceld

Membre depuis : 26 avr. 2007
Messages : 1
 26 avr. 2007 à 00:03
Manu,

problème résolu avec le driver JDBC et la connexion.

bonne journée

Thierry

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 26 avr. 2007 à 00:09
Ravi que tu es pu résoudre ce problème de toi-même. C'est que tu es sur la bonne voie... ;-)
As-tu une petite idée du problème qui s'est présenté ?
---
Manu (moderator/modérateur)

marceld

Membre depuis : 26 avr. 2007
Messages : 1
 26 avr. 2007 à 21:47
Bonsoir Manu,

le problème rencontré était une inattention de ma part: j'avais oublié de cocher l'option "Create An Anonymous Account", car lors de l'insatllation du SGBD MySql pour Coldfusion, il m'a tout simplement permis d'utiliser soit l'option précédente ou l'option "Modify Security Settings".

Ainsi en revenant sur java, j'étais distrait et il m'a fallu relire ton livre sur ce chapitre("connexion à la Bd avec JDBC").

Merci pour tout.

Bonne journée.

marceld


Page d'accueilFindIt !ContactDébut de la page

© Copyrights 1997-2014 eTeks - Tous droits réservés

Cahier Java