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 :

connexion entre java et mysql par jdbc odbc


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Par défaut connexion entre java et mysql par jdbc odbc
    Bonjour à tous,

    Je cherche à établir une connexion entre java et mysql, à partir d'un driver jdbc-odbc. Pour l'instant, je n'y suis pas parvenu.

    J'ai installé le programme mysql-connector-odbc-3.51.23-0 depuis un package .rpm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [xxxx@localhost ~]$ rpm -qa | grep mysql
    mysql-5.0.45-6.fc7
    mysql-libs-5.0.45-6.fc7
    mysql-server-5.0.45-6.fc7
    mysql-connector-odbc-3.51.23-0
    Le programme mysql-connector-odbc-3.51.23-0 a apporté entre autres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [root@tempo-dhcp16 ~]# rpm -ql mysql-connector-odbc
    /usr/bin/myodbc3i
    /usr/bin/myodbc3m
    ...
    /usr/lib/libmyodbc3.so
    ...
    Pour info, je liste mes deux fichiers de configuration associés à odbc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // fichier de configuration /etc/odbcinst.ini
    [MySQL]
    DRIVER		= /usr/lib/libmyodbc3.so
    UsageCount		= 1
    et,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // fichier de configuration /etc/odbc.ini
    [MySQL-Forum]
    Description = MySQL database Forum
    Driver = MySQL
    Server = localhost
    Database = Forum
    Port = 3306
    Socket = /var/lib/mysql/mysql.sock
    Il existe bel et bien une base de donnée Forum dans le répertoire /var/lib/mysql,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    ..
    | Forum              | 
    ..
    +--------------------+
    Je vérifie la connexion entre odbc et mysql et le bon fonctionnement du driver en utilisant la commande isql,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    [xxxx@localhost accèsODBC]$ isql MySQL-Forum root xxxx
    +---------------------------------------+
    | Connected!                            |
    |                                       |
    | sql-statement                         |
    | help [tablename]                      |
    | quit                                  |
    |                                       |
    +---------------------------------------+
    Je pense que tout ceci montre que:
    - un connecteur jdbc-odbc est bien installé
    - une base de donnée nommée Forum est bien créée
    - odbc peut se connecter à la base de donnée Forum via le driver libmyodbc3.so

    Le problème que je rencontre, apparaît au niveau de la connexion entre java et odbc.

    Le code java que je compile et exécute est listé ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    import java.sql.Connection ;
    import java.sql.DriverManager ;
    public class Forum {
    	public static void main (String[] args) throws Exception {
    		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
    		Connection c = DriverManager.getConnection("jdbc:odbc:Forum");
    		System.out.println("Connexion ouverte") ;
    		c.close() ;
    		System.out.println("Connexion fermée") ; 
    	}
    }
    La compilation ne génère pas d'erreur. Par contre j'obtiens ensuite une erreur de mémoire java.lang.NullPointerException,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [xxxx@localhost accèsODBC]$ java Forum
    Exception in thread "main" java.lang.NullPointerException
            at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436)
            at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153)
            at java.sql.DriverManager.getConnection(DriverManager.java:525)
            at java.sql.DriverManager.getConnection(DriverManager.java:171)
            at Forum.main(Forum.java:18)
    Clairement, la connexion ne se fait pas. L'url "jdbc:odbc:Forum" n'est pas correcte. J'ai testé quelques autres url un peu au hasard comme par exemple "jdbc:odbc://localhost/MySQL-Forum". J'ai aussi tenté d'ajouter le nom de l'utilisateur et le mot de passe "jdbc:odbc://localhost/MySQL-Forum","root","xxxx", mais rien n'y fait.

    La FAQ de développez.com dit ceci:
    Les URL JDBC sont définies sous forme de String selon ce schéma :
    String url = "jdbc:<subprotocol>:<subname>"
    <subname> Une manière d'identifier la source de données. Ce dernier élément dépend complètement du sous-protocole et du driver.
    Par exemple :
    * jdbc:odbc:maBase;CacheSize=30;ExtensionCase=LOWER
    * jdbc:mysql://localhost/maBase
    * jdbc:oracle:oci8@:maBase
    * jdbc:oracle:thin@://localhost:8000:maBase
    * jdbc:sybase:Tds:localhost:5020/maBase
    Il est nécessaire de se documenter auprès du fournisseur du driver.
    Sachant que le fichier /usr/share/doc/mysql-connector-odbc-3.51.23/README n'apporte pas cette information, où puis-je trouver la bonne syntaxe de l'url dans getConnection(url) qui correspond à mon driver..?

    Je remercie vivement ceux qui ont lu ce message jusqu'au bout. Pensez-vous que le problème est bien dans la syntaxe de l'url? Dans le cas contraire, quelle est votre diagnostic? Comment vous connectez-vous à mysql si vous utilisez linux?

    N.B. j'utilise fedora, jdk1.5.0, et pour l'instant je code directement à partir de la console.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Par défaut
    Salut

    Le problème vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Connection c = DriverManager.getConnection("jdbc:odbc:Forum");
    Tu ne dois pas utiliser le nom de ta base de données mais la référence sous laquelle elle est connue dans ODBC, c'est à dire "MySQL-Forum" si je comprends bien ton code.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Par défaut
    Salut @Ikey, et merci pour ta réponse.
    Si comme tu le proposes, j'écris plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Connection c = DriverManager.getConnection("jdbc:odbc:MySQL-Forum");
    j'obtiens encore la même erreur,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [yann@localhost accèsODBC]$ java Forum
    Exception in thread "main" java.lang.NullPointerException
            at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436)
            at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153)
            at java.sql.DriverManager.getConnection(DriverManager.java:525)
            at java.sql.DriverManager.getConnection(DriverManager.java:193)
            at Forum.main(Forum.java:18)

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Par défaut
    Et si tu rajoutes le login et le mot de passe, ca donne quoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Connection c = DriverManager.getConnection("jdbc:odbc:MySQL-Forum", "[login]", "[password]");

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Par défaut
    Si je fais,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Connection c = DriverManager.getConnection("jdbc:odbc:MySQL-Forum","root","mon mot de passe");
    j'obtiens encore une fois le même message d'erreur.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Par défaut
    Bon, alors essaie de décomposer

    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
    import java.sql.*;
     
    public class Forum {
        public static void main (String[] args) 
        {
            Connection c = null;
     
            try
            {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
            }
            catch (Exception e)
            {
                System.err.println("Problème de chargement du driver")
                System.exit(0);
            }
     
            try
            {
                c = DriverManager.getConnection("jdbc:odbc:MySQL-Forum", "[login]", "[password]")
                System.out.println("Connexion ouverte") ;
            }
            catch (Exception e)
            {
                System.err.println("Impossible d'ouvrir la connexion")
                System.exit(0);
            }
     
            try
            {
                c.close() ;
                System.out.println("Connexion fermée") ; 
            }
            catch (Exception e)
            {
                System.err.println("impossible de fermer la connexion")
                System.exit(0);
            }
        }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. connexion mySQL par pilote ODBC
    Par engrobel dans le forum MySQL
    Réponses: 5
    Dernier message: 02/12/2008, 17h46
  2. connexion entre java et BD Acces
    Par mayaD dans le forum JDBC
    Réponses: 2
    Dernier message: 06/07/2008, 22h16
  3. Connexion mysql par jdbc
    Par Photon- dans le forum Installation
    Réponses: 5
    Dernier message: 03/03/2008, 10h59
  4. acces base mysql par jdbc via un proxy
    Par xavfree dans le forum JDBC
    Réponses: 4
    Dernier message: 23/07/2007, 14h48
  5. Connexion entre Dreamweaver et Mysql
    Par hoangeric dans le forum Outils
    Réponses: 17
    Dernier message: 08/07/2006, 13h09

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