connexion et echange de donnée avec base mysql

connexion et echange de donnée avec base mysql - Java - Programmation

Marsh Posté le 08-12-2005 à 15:37:42    

Salut
Je viens de créer une base mysql sur mon poste avec les propriétés suivantes:
Serveur: localhost
Base: dbtest
Table: user
User: admin
Pass: admin1
 
j'ai manuellement via phpMyAdmin ajouté 2 utilisateurs dans ma table user.
la table user possède 4 champs text avec nom prenom pseudo ville.
 
maintenant mon but est de me connecter à cette table via un programme java.
pas d'interface graphique, je souhaite juste faire des essais rapides.  
 
voici le code que j'utilise pour me connecter à la base et y envoyer une donnée placée manuellement dans le code.
 

Code :
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.SQLException;
  4. import java.sql.Statement;
  5. public class Main {
  6.    
  7.     public static void main(String[] args) {
  8.     String url = "jdbc:mysql://localhost";
  9.     String user = "admin";
  10.     String password = "admin1";
  11.     try {
  12. Connection con = DriverManager.getConnection( url, user, password);
  13.     } catch (SQLException ex) {
  14.         System.out.println("Echec connection!!" );
  15.     }
  16.    
  17.     Statement stmt = con.createStatement();
  18.     String q1 = "INSERT into test values ('AAA', 'BBB', 'CCC', 'DDD')";
  19.     String q2 = "SELECT * from test";
  20.     stmt.executeUpdate(q1);
  21.     stmt.executeQuery(q2);
  22.    
  23.     ResultSet rs1 = stmt.executeUpdate(q1);
  24.     int nbmodif = stmt.executeQuery(q2);
  25.    
  26.     con.close();
  27.     }
  28. }


 
Sauf que là j'ai des erreurs qui sont montrées par netbeans:
ligne 18 : can't find symbol, symbol variable con
ligne 26 : can't find symbol, symbol class ResultSet
ligne 27 : incompatible types, found java.sql.ResultSet, required int
ligne 29 : can't find symbol, symbol variable con
 
Vous avez une idée?  
Merci

Reply

Marsh Posté le 08-12-2005 à 15:37:42   

Reply

Marsh Posté le 08-12-2005 à 15:54:25    

Toi c'est ton premier programme java ! ( je me trompe ?? )
l 18 : déclare ta connection en dehors du try
l 26 : manque l'import
l 27 : je me rappelle plus, et quand je me rappelle plus, je vais voir la javadoc...
l 29 : idem l 18.

Reply

Marsh Posté le 08-12-2005 à 16:03:37    

c'est mon premier essai avec une base de donnée.

Reply

Marsh Posté le 08-12-2005 à 16:39:42    

Je viens de faire un nouvel essai en simplifiant au maximum mon code:
 

Code :
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.SQLException;
  4. import java.sql.Statement;
  5. public class Main {
  6.    
  7.     public static void main(String[] args) {
  8.     String url = "localhost";
  9.     String user = "admin";
  10.     String password = "admin1";
  11.    
  12.     String q1 = "INSERT into test values ('AAA', 'BBB', 'CCC', 'DDD')";
  13.     String q2 = "SELECT * from test";
  14.    
  15.     try {
  16.     Connection con = DriverManager.getConnection( url, user, password);
  17.     Statement stmt = con.createStatement();
  18.    
  19.     stmt.executeUpdate(q1);
  20.     stmt.executeQuery(q2);
  21.    
  22.     } catch (SQLException ex) {
  23.         System.out.println("Echec connection!!" );
  24.     }
  25.    
  26.     }
  27. }


 
Cette fois il ne me fait pas d'erreur à la compilation, mais à l'execution il m'affiche Echec connexion.
J'utilise NetBeans, j'ai lu sur des forums que parfois il faut installer un driver:
j'ai telecharger celui ci: mysql-connector-java-3.0.17-ga  mais je ne sais pas quoi en faire  :??:

Message cité 1 fois
Message édité par white-rabbit le 08-12-2005 à 16:53:21

---------------
>> Portfolio: www.MyDeclic.com
Reply

Marsh Posté le 08-12-2005 à 17:11:31    

white-rabbit a écrit :


J'utilise NetBeans, j'ai lu sur des forums que parfois il faut installer un driver:
j'ai telecharger celui ci: mysql-connector-java-3.0.17-ga  mais je ne sais pas quoi en faire  :??:


 
Une lecture de la doc s'impose.
 
Allez courage, je t'ai même trouvé un tutoriel en français : JDBC Tutoriel

Reply

Marsh Posté le 08-12-2005 à 17:20:17    

merci, je vais lire ça ;)


---------------
>> Portfolio: www.MyDeclic.com
Reply

Marsh Posté le 08-12-2005 à 17:44:55    

alors en fait, j'ai un ptit doute concernant les outils que j'ai installé.
je me demande si j'ai bien tout mis.
 
j'ai down ici  
http://developers.sun.com/prodtech/devtools/index.html -> NetBeans
https://jsecom15.sun.com/ECom/EComA [...] 9FD7925BC8 --> le jdk 1.5.0
 
C'est le dernier jdk, donc je suppose que JDBC est inclu dedans. Donc l'etape 2 suivante est ok normalement
 

Code :
  1. 2. Installez un pilote sur votre machine
  2. Votre pilote devrait contenir des instructions d'installation. Certains pilote JDBC ont été écrit pour des SGBD (Systeme de Gestion de Base de Donnée) spécifiques, en général l'installation consiste à copier le pilote sur votre machine, aucune configuration n'est nécessaire.
  3. 3. Installez votre SGBD (si nécessaire)
  4. Si vous n'avez pas de SGBD installé sur votre machine, suivez les instructions
  5. fournis avec. La plupart des utilisateurs possèdent déjà un SGBD installé et
  6. travaillent avec une base de données déjà établie.


 
etape 3 installer SGBD
ça je sais pas de quoi il s'agit.. s'agit il du serveur de bdd?
 
dans ce cas j'ai down easyphp1.8 j'ai une BDD qui tourne bien.
je fais tourner un forum phpBB dessus.
 
Je ne pense pas manquer d'outil donc. mais je prefere etre sur avant de m'y mettre.


---------------
>> Portfolio: www.MyDeclic.com
Reply

Marsh Posté le 08-12-2005 à 18:00:36    

System.out.println("Echec connection!!" );


Faut revoir les bases... Si tu ne log pas l'exception, comment savoir ce qu'il s'est passé ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 08-12-2005 à 18:41:20    

fallait que je mette System.out.println(ex);
 
je test ça dès demain.
merci pour la remarque sircam


---------------
>> Portfolio: www.MyDeclic.com
Reply

Marsh Posté le 08-12-2005 à 20:05:50    

white-rabbit a écrit :

fallait que je mette System.out.println(ex);
 
je test ça dès demain.
merci pour la remarque sircam


non, ex.printStackTrace(); pour voir tout les details de l'exception :o :o
 
as tu mis le jar qui contient le driver mysql dans ton classpath ?
(si ta reponse a cette question est "c'est quoi le classpath?" passe faire un tour par le topic debutant/topic classpath, si la reponse a ta question est "qu'est-ce qu'un driver jdbc?" c'est que tu n'as pas lu le tuto qui t'a ete donner dans ce topic-ci, si ta reponse est non, alors declare le jar dans ton classpath, si c'est oui, la on va pouvoir avancer)

Reply

Marsh Posté le 08-12-2005 à 20:05:50   

Reply

Marsh Posté le 09-12-2005 à 10:23:19    

salut souk
effectivement je n'avais pas copié le jar et l'erreur renvoyée à l'execution etait:  

Code :
  1. run:
  2. java.sql.SQLException: No suitable driver


 
Je suis allé voir le topic debutant et le topic dédié au classpath et j'ai copié les jar de la librairie jdbc dans le repertoire lib de mon jdk, et ajouté au classpath de Netbeans.
 
http://www.image-dream.com/membre/up/mini_fastupload/1be8cc5f2e935f1a83842a46c5a8c650.JPG
 
Mais bref, toujours la meme erreur. je pensais que c'etait parce que j'avais pas reboot, mais pb se poursuit encore..
Une idée de ce que j'ai pu oublier?
 
j'vais essayer avec eclipse à tout hasard pour voir si c'est pas moi qui a merdé sous netbeans
 
edit: pareil sous eclipse en ayant ajouté tous les jars de ma lib jdbc.
 
pour info, voici les 3 *.jar que j'ai ajouté:
- mysql-connector-java-3.0.17-ga-bin.jar
- jdbc2_0-stdext.jar
- jta-spec1_0_1.jar


Message édité par white-rabbit le 09-12-2005 à 10:30:02

---------------
>> Portfolio: www.MyDeclic.com
Reply

Marsh Posté le 09-12-2005 à 10:34:00    

bon, as tu lu le tuto qu'on t'as donné ? notament la partie 3.1 intitulée "3.1 Charger les pilotes." ? [:itm] tout est expliqué dans ce tuto ... et un conseil, ne copie pas les jar dans le repertoire lib de ton JDK, c'est une mauvaise habitude, il suffit de les declarer dans le classpath

Reply

Marsh Posté le 09-12-2005 à 11:35:49    

c'est bon j'ai reussi !!!
je vais manipuler un peu tout ça maintenant.
merci bcp pour votre aide et patience !


---------------
>> Portfolio: www.MyDeclic.com
Reply

Marsh Posté le 12-12-2005 à 16:53:29    

c'est bon j'ai pu arriver au but que je m'etais donner.
je peux maintenant ecrire lire, faire des recherches, tri, reset, dans ma base de donnée utilisateur.
je suis ravi.
merci beaucoup à tout ceux qui m'ont aidé.
 
 
maintenant mon but est de faire tourner sur plusieurs machines ce programme java, en se connectant sur la base mysql d'un serveur sur le reseau.
pour commencer j'ai juste essayé de changer dans mon code l'url localhost par l'ip de ma machine.  
 
voici le resultat que j'ai lorsque j'execute sur ma propre machine, là où tourne le serveur mysql
 

Code :
  1. Exception in thread "main" book.db.DBException: Erreur SQL : com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
  2. ** BEGIN NESTED EXCEPTION **
  3. java.net.SocketException
  4. MESSAGE: java.net.ConnectException: Connection refused: connect
  5. STACKTRACE:
  6. java.net.SocketException: java.net.ConnectException: Connection refused: connect
  7.         at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
  8.         at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
  9.         at com.mysql.jdbc.Connection.createNewIO(Connection.java:2555)
  10.         at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
  11.         at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
  12.         at java.sql.DriverManager.getConnection(DriverManager.java:525)
  13.         at java.sql.DriverManager.getConnection(DriverManager.java:171)
  14.         at book.db.BdD.<init>(BdD.java:24)
  15.         at book.Menu.main(Menu.java:15)
  16. ** END NESTED EXCEPTION **


 
Vous pensez que ça pourrait se bloquer suite à un firewall sur ma machine?


Message édité par white-rabbit le 12-12-2005 à 16:59:03

---------------
>> Portfolio: www.MyDeclic.com
Reply

Marsh Posté le 12-12-2005 à 17:22:55    

Oui, c'est le message d'erreur typique quand un proxy/firewall refuse la connexion

Reply

Marsh Posté le 12-12-2005 à 17:25:42    

Sans doute ta DB n'accepte pas les connections en remote, donc autre que 'localhost'. Consulte la doc du DBMS à ce sujet et fais une recherche sur ce forum : ça revient souvent.
 
Ensuite, quand tu catches une SQLException plutôt que la générique Exception, tu disposes de précieuses infos supplémentaires : code d'erreur vendeur (donc renvoyé par le DBMS) et exceptions chaînées éventuelles. Cf. javadoc.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 12-12-2005 à 17:26:26    

j'ai pourtant desactivé le firewall de XP. je ne pense pas que le reseau de mon entreprise puisse jouer là dessus, non ? pour des tests sur ma propre machine...


---------------
>> Portfolio: www.MyDeclic.com
Reply

Marsh Posté le 14-12-2005 à 16:59:52    

c'est bon ça fonctionne parfaitement maintenant. mon pb venait de mon serveur mysql qui n'ecoutait pas sur le port. à cause de easyphp qui simplifie unpeu trop tout.


---------------
>> Portfolio: www.MyDeclic.com
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed