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:
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 [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
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
6
7 [root@tempo-dhcp16 ~]# rpm -ql mysql-connector-odbc /usr/bin/myodbc3i /usr/bin/myodbc3m ... /usr/lib/libmyodbc3.so ...
et,
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
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 // 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
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 mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ .. | Forum | .. +--------------------+
Je pense que tout ceci montre que:
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 | | | +---------------------------------------+
- 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:
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
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") ; } }
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.
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)
La FAQ de développez.com dit ceci:
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..?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.
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.
Partager