Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[java] connexion à un serveur mysql (resolu)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Fri Oct 14, 2005 2:55 pm    Post subject: [java] connexion à un serveur mysql (resolu) Reply with quote

J'ai quelque souci avec le programme que je suis entrain de réaliser:

Code:

Demarrage de BDloopx...
echec pilote : java.lang.ClassNotFoundException: org.gjt.mm.mysql.driver
fin de la connexion
Fin...


En fait, un drivers pour me connecter à ma base de donnée... Pourquoi ne trouve t'il pas la class ???

J'ai emergé eclipse-sdk, sun-jdk, jdbc-mysql...

Code:

public class Connexion {
   
    public Connexion() {
        //Nom de mon pilote
        //String pilote = "com.mysql.jdbc.Driver";
        String pilote = "org.gjt.mm.mysql.driver";
       
       
        try{
            //Chargement de mon pilote
            Class.forName(pilote);
            //Connexion à ma base mysql avec mon login et mot de passe ( à vous de changer cela)
            Connection connexion = DriverManager.getConnection("jdbc:mysql://serveur/film","root","XXX");
            //Création de mon statement qui va me permettre d'executer mes requetes
            Statement instruction = connexion.createStatement();
            //Ma table s'appelle coffees et tout ce qui reste dépend d'elle
            //Vous devez changer certaines infos comme le nom de la table et celui des colonnes
            ResultSet resultat = instruction.executeQuery("show tables");
                       
        }
        catch (Exception e){
           
            System.out.println("echec pilote : "+e);
        }
       
    }
}


j'ai testé avec 2 pilotes, mais je comprend pas cette notion de pilote.. Le nom est une adresse retournée ?? bizarre, bizarre....

i need help :oops:

EDIT: c'est bizarre ca je trouve
Code:

loopx@loopx-nb ~ $ java -classpath
*** glibc detected *** free(): invalid next size (fast): 0x08059050 ***
Aborted

_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org


Last edited by loopx on Mon Oct 17, 2005 7:29 pm; edited 1 time in total
Back to top
View user's profile Send private message
Bapt
Veteran
Veteran


Joined: 14 Apr 2003
Posts: 1152
Location: Paris

PostPosted: Fri Oct 14, 2005 5:36 pm    Post subject: Reply with quote

Tu peux nous mettre la commande avec laquelle tu démarre ton appli stp ?
Back to top
View user's profile Send private message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Fri Oct 14, 2005 8:45 pm    Post subject: Reply with quote

Ben en fait, je fais play avec eclipse ... :(

Mais, normalement, ca doit etre ca :
Code:

loopx@loopx-nb ~/workspace/bdloopx/main $ java Exec
Exception in thread "main" java.lang.NoClassDefFoundError: Exec (wrong name: main/Exec)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)



Mais heu, la ca fonctionne pas pourtant :(:(:(...

Je vais refaire une class avec juste un main pour essayer de me connecter à mon serveur sql... La ca foire grave...
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org
Back to top
View user's profile Send private message
bong
Apprentice
Apprentice


Joined: 26 Oct 2004
Posts: 276
Location: Brest / Metz

PostPosted: Fri Oct 14, 2005 8:48 pm    Post subject: Reply with quote

Hop, essaye ça :wink:
https://forums.gentoo.org/viewtopic-t-387477-start-0-postdays-0-postorder-asc-highlight-.html
Back to top
View user's profile Send private message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Fri Oct 14, 2005 8:54 pm    Post subject: Reply with quote

1 seul class:
Code:

package main;
import java.sql.*;
 
class Test{
   
    public static void main(String[] args){
       
        //Nom de mon pilote
        String pilote = "com.mysql.jdbc.Driver";
       
        try{
            //Chargement de mon pilote
            Class.forName(pilote);
            //Connexion à ma base mysql avec mon login et mot de passe ( à vous de changer cela)
            Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/kop","root","zorro");
            //Création de mon statement qui va me permettre d'executer mes requetes
            Statement instruction = connexion.createStatement();
            //Ma table s'appelle coffees et tout ce qui reste dépend d'elle
            //Vous devez changer certaines infos comme le nom de la table et celui des colonnes
            ResultSet resultat = instruction.executeQuery("SELECT * FROM coffees");
            while(resultat.next()){
               
                System.out.println("---------------------------");
                System.out.println("Nom du cafe: "+resultat.getString("cof_name"));
                    System.out.println("Numero du fournisseur: "+resultat.getInt("sup_id"));
                        System.out.println("Prix: "+resultat.getFloat("price"));
                            System.out.println("Ventes: "+resultat.getInt("sales"));
                                System.out.println("Total: "+resultat.getInt("total"));
               
            }
        }
        catch (Exception e){
           
            System.out.println("echec pilote : "+e);
        }
       
    }
}


Si je fais play:
Code:

echec pilote : java.lang.ClassNotFoundException: com.mysql.jdbc.Driver


Si je fais par la commande java:
Code:

loopx@loopx-nb ~/workspace/bdloopx/main $ java Test
Exception in thread "main" java.lang.NoClassDefFoundError: Test (wrong name: main/Test)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)


Heu, ca me dépasse, pourquoi n'y a t'il pas la meme erreur ????????????? Ca n'a carément rien avoir :(

EDIT:
Code:

loopx@loopx-nb ~/workspace/bdloopx/main $ whereis java
java: /opt/sun-jdk-1.4.2.09/bin/java /opt/blackdown-jdk-1.4.2.02/bin/java /opt/blackdown-jre-1.4.2.02/bin/java


Quand je pense que j'ai fais une applic l'année dernière, arrive meme plus à faire une betise en java :(:(:(
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org
Back to top
View user's profile Send private message
hiboo
n00b
n00b


Joined: 17 Jan 2005
Posts: 55

PostPosted: Sat Oct 15, 2005 2:29 pm    Post subject: Reply with quote

loopx wrote:

EDIT: c'est bizarre ca je trouve
Code:

loopx@loopx-nb ~ $ java -classpath
*** glibc detected *** free(): invalid next size (fast): 0x08059050 ***
Aborted
ca me fait ca aussi.
l'option -classpath est faite pour spécifier le classpath de ton appli : là, y'a pas d'appli, y'a même pas de nom de répertoire, donc normalement ca devrait mettre une erreur de syntaxe.
loopx wrote:
1 seul class:
Code:

package main;
import java.sql.*;
 
class Test{
   
    public static void main(String[] args){
       
        //Nom de mon pilote
        String pilote = "com.mysql.jdbc.Driver";
       
        try{
            //Chargement de mon pilote
            Class.forName(pilote);
            //Connexion à ma base mysql avec mon login et mot de passe ( à vous de changer cela)
            Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/kop","root","zorro");
            //Création de mon statement qui va me permettre d'executer mes requetes
            Statement instruction = connexion.createStatement();
            //Ma table s'appelle coffees et tout ce qui reste dépend d'elle
            //Vous devez changer certaines infos comme le nom de la table et celui des colonnes
            ResultSet resultat = instruction.executeQuery("SELECT * FROM coffees");
            while(resultat.next()){
               
                System.out.println("---------------------------");
                System.out.println("Nom du cafe: "+resultat.getString("cof_name"));
                    System.out.println("Numero du fournisseur: "+resultat.getInt("sup_id"));
                        System.out.println("Prix: "+resultat.getFloat("price"));
                            System.out.println("Ventes: "+resultat.getInt("sales"));
                                System.out.println("Total: "+resultat.getInt("total"));
               
            }
        }
        catch (Exception e){
           
            System.out.println("echec pilote : "+e);
        }
       
    }
}


Si je fais play:
Code:

echec pilote : java.lang.ClassNotFoundException: com.mysql.jdbc.Driver


Si je fais par la commande java:
Code:

loopx@loopx-nb ~/workspace/bdloopx/main $ java Test
Exception in thread "main" java.lang.NoClassDefFoundError: Test (wrong name: main/Test)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)


Heu, ca me dépasse, pourquoi n'y a t'il pas la meme erreur ????????????? Ca n'a carément rien avoir :(
L'erreur de la ligne de commande, c'est que java ne trouve même pas ta classe principale, c'est juste un erreur dans la syntaxe de ta ligne de commande. La, je peux pas trop t'aider car je sais pas ce que c'est que ton répertoire, où est ton .class etc...

Ton problème est à mon avis un pb de classpath. Dans eclipse, dans la configuration de ton "Run" qui lance ton appli, y'a un onglet classpath : ajoute y le répertoire où il y a ton driver jdbc
Back to top
View user's profile Send private message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Sat Oct 15, 2005 2:50 pm    Post subject: Reply with quote

j'utilise eclipse, mon repertoire de travail=/home/loopx/workspace

repertoire du projet=/home/loopx/workspace/bdloopx

Code:

loopx@loopx-nb ~/workspace/bdloopx $ ls -la
total 8
drwxr-xr-x  4 loopx users 160 Oct 14 22:48 .
drwxr-xr-x  4 loopx users 104 Oct 12 23:43 ..
-rw-r--r--  1 loopx users 220 Oct 12 23:43 .classpath
-rw-r--r--  1 loopx users 366 Oct 12 23:43 .project
drwxr-xr-x  2 loopx users  96 Oct 13 00:23 .settings
drwxr-xr-x  2 loopx users 112 Oct 14 22:50 main



loopx@loopx-nb ~/workspace/bdloopx $ cat .classpath
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
        <classpathentry kind="src" path=""/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
        <classpathentry kind="output" path=""/>
</classpath>


C'est le .classpath qu in'est pas correct ???????,
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org
Back to top
View user's profile Send private message
bong
Apprentice
Apprentice


Joined: 26 Oct 2004
Posts: 276
Location: Brest / Metz

PostPosted: Sat Oct 15, 2005 4:49 pm    Post subject: Reply with quote

Est-ce que t'as pris la peine d'aller lire le post dont je t'ai donné le lien juste au dessus?
Back to top
View user's profile Send private message
hiboo
n00b
n00b


Joined: 17 Jan 2005
Posts: 55

PostPosted: Sun Oct 16, 2005 8:32 am    Post subject: Reply with quote

loopx wrote:
j'utilise eclipse, mon repertoire de travail=/home/loopx/workspace

repertoire du projet=/home/loopx/workspace/bdloopx

Code:
loopx@loopx-nb ~/workspace/bdloopx $ cat .classpath
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
        <classpathentry kind="src" path=""/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
        <classpathentry kind="output" path=""/>
</classpath>


C'est le .classpath qu in'est pas correct ???????,
Ce classpath là, cela doit être celui pour la compilation. Etant donné que tu utilise l'interface java.sql, t'as pas besoin de changer ce classpath là, c'est le classpath d'exécution qu'il faut que tu change.
Back to top
View user's profile Send private message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Sun Oct 16, 2005 5:36 pm    Post subject: Reply with quote

:oops:

j'ai complètement oublié d'aller voir :?

Je vais le lire de suite...
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org
Back to top
View user's profile Send private message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Sun Oct 16, 2005 6:36 pm    Post subject: Reply with quote

nan, ca fonctionne toujours pas :(...

J'ai fais 2 liens (avec ln -s) pour le fichier jdbc-mysql... j'ai du emerger sun-jre-bin que je n'avais pas

Ce que je comprend pas, c'est ca:
Code:

loopx-nb main # cd /opt/
lloopx-nb opt # ls -l
total 0
drwxr-xr-x  6 root root 352 Oct  9 01:57 OpenOffice.org
drwxr-xr-x  3 root root  72 Oct  7 23:15 ati
drwxr-xr-x  8 root root 192 Oct 10 21:27 blackdown-jdk-1.4.2.02
drwxr-xr-x  6 root root 144 Oct 10 21:28 blackdown-jre-1.4.2.02
drwxr-xr-x  3 root root  72 Oct 10 21:29 libreadline-java
drwxr-xr-x  5 root root 120 Oct  8 15:49 opera
drwxr-xr-x  9 root root 224 Oct 12 21:26 sun-jdk-1.4.2.09
drwxr-xr-x  8 root root 200 Oct 16 20:26 sun-jre-bin-1.5.0.05


Qu'est ce que le blackdown-jde et -jre ???
en plus, dans eclipse, en créant mon projet, il me fait une arborescence avec le nom du projet, le nom des packages situé le plus à la racine, ET un truc JRE system library, qui, lui, contient comme .jar, les fichiers du blackdown-jdk...

vous comprenez ou je recommence :D... enfin, je trouve ca bizarre........

EDIT:
bon alors je viens de rajouter 2 liens vers jdbc-mysql dans les 2 rep blackdown, et maintenant, AVEC le boutton play de eclipse, ca fonctionne mieux, mais:
Code:

loopx@loopx-nb ~/workspace/bdloopx/main $ java Test
Exception in thread "main" java.lang.NoClassDefFoundError: Test (wrong name: main/Test)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)

ce qui est pas cool..

Sinon, en ce qui concerne le PLAY avec eclipse, il me retourne ceci:
Code:

echec pilote : com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused
   at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
   at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:283)
   at com.mysql.jdbc.Connection.createNewIO(Connection.java:2541)
   at com.mysql.jdbc.Connection.<init>(Connection.java:1474)
   at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:264)
   at java.sql.DriverManager.getConnection(DriverManager.java:512)
   at java.sql.DriverManager.getConnection(DriverManager.java:171)
   at main.Test.main(Test.java:19)


** END NESTED EXCEPTION **



Last packet sent to the server was 24 ms ago.


Il se pourrait que mon serveur mysql ne fonctionne pas trop trop bien....
Je sais pas trop comment ca fonctionne, mais mysql est démarré sur mon serveur, et je sais pas sur quel port il écoute, sais meme pas si il à démarrer avec l'option "réseau"... :|...

Je pencherai sur le problème.....

Heu, en passant, voila ce que j'ai pour mysqld (que j'ai trouvé dans /var/log/mysql):
Code:

serveur mysql # cat mysqld.err
.....
.....
051015  9:56:10  InnoDB: Started
/usr/sbin/mysqld: ready for connections.
Version: '4.0.25'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  Gentoo Linux mysql-4.0.25-r2


J'ai pas encore de firewall, je suppose qu'il suffit juste de laisser passer le port 3306....
Sinon, la ca veux dire que mysqld est démarrer et opérationnel... donc c'est encore mon programme en java qui foire :(
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org
Back to top
View user's profile Send private message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Mon Oct 17, 2005 7:42 pm    Post subject: Reply with quote

C'est bon, ca fonctionne

J'aurais une dernière question...

Comment faire pour récuperer TOUTE la sortie d'une commande SQL...

Bah, voyer le truc executeQuery dans le code en haut ???, j'aimerai bien y placer un "describe nom_de_ma_table", mais j'arrive po à afficher ca dans mon programme java...

Code:

ResultSet resultat = instruction.executeQuery("describe film");
            while(resultat.next()) {   
               System.out.println("---Results---");
               //System.out.println("Nom du cafe: "+resultat.getString("cof_name"));
               //System.out.println("Numero du fournisseur: "+resultat.getInt("sup_id"));
               //System.out.println("Prix: "+resultat.getFloat("price"));
               //System.out.println("Ventes: "+resultat.getInt("sales"));
               //System.out.println("Total: "+resultat.getInt("total"));
               
               System.out.println(resultat.getString());    //Marche po :(
              
              
            }

CONSOLE=Starting main class ...
---Lancement du test...
---Results---
echec pilote : java.sql.SQLException: Column '' not found.
---Fin du test


Ce serais génial que je sache comment faire, après je pourrais enfin commencer à coder :)
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org
Back to top
View user's profile Send private message
bong
Apprentice
Apprentice


Joined: 26 Oct 2004
Posts: 276
Location: Brest / Metz

PostPosted: Mon Oct 17, 2005 8:24 pm    Post subject: Reply with quote

Les methodes getXXX() prennent un int en parametre... avec 1 correspondant a la premiere colone de ton ResultSet ;)
Back to top
View user's profile Send private message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Mon Oct 17, 2005 8:35 pm    Post subject: Reply with quote

Allaise, Allaise, Allaise :)

Merci beaucoup :lol:
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org
Back to top
View user's profile Send private message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Mon Oct 17, 2005 8:44 pm    Post subject: Reply with quote

Heu, oui mais non... en fait, j'aimerai bien avoir ce resultat:
Code:

ysql> describe film
    -> ;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| nom   | varchar(128) | YES  |     | NULL    |       |
| genre | varchar(128) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)


et pour l'instant, avec le tit 1, je n'ai que ca:

Code:

nom
genre

bref, pas très long :D

EDIT:
Je trouve pas la fonction pour connaitre le nombre de colonne en fait :(
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum