Impossible de se connecter à une base Access ...

Impossible de se connecter à une base Access ... - Java - Programmation

Marsh Posté le 11-02-2005 à 16:15:33    

Je n'arrive pas à me connecter à une base Access  :cry:  
 

Code :
  1. String url= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=/home/projets/xxxx/xxx/bdd/Analyse.mdb;DriverID=22;READONLY=true}";
  2. String user = "user";
  3. String pass = "xxxxx";
  4. public String test(){
  5.  PreparedStatement pGet=null;
  6.  ResultSet rst = null;
  7.  Connection con = null;
  8.  String get = "select count(*) from localisation";
  9.  String laValeur = "";
  10.  try {
  11.   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
  12.   System.out.println(url+","+user+","+pass);
  13.   con = DriverManager.getConnection(url,user,pass);
  14.   pGet = con.prepareStatement(get);
  15.   pGet.clearParameters();
  16.   rst = pGet.executeQuery();
  17.   if (rst.next()) {
  18.    laValeur = ""+rst.getInt(1);
  19.   }
  20.   rst.close();
  21.   rst = null;
  22.   pGet.close();
  23.   pGet = null;
  24.   con.close();
  25.   con = null;
  26.  } catch (Exception e) {
  27.   e.printStackTrace();
  28.  } finally {
  29.   if (rst != null) {
  30.    try {
  31.     rst.close();
  32.    } catch (SQLException e) {
  33.     ;
  34.    }
  35.    rst = null;
  36.   }
  37.   if (pGet != null) {
  38.    try {
  39.     pGet.close();
  40.    } catch (SQLException e) {
  41.     ;
  42.    }
  43.    pGet = null;
  44.   }
  45.   if (con != null) {
  46.    try {
  47.     con.close();
  48.    } catch (SQLException e) {
  49.     ;
  50.    }
  51.    con = null;
  52.   }
  53.  }
  54.  return laValeur;
  55. }


 
J'obtiens cette erreur :
 

Citation :

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:512)
 at java.sql.DriverManager.getConnection(DriverManager.java:171)
 a

Reply

Marsh Posté le 11-02-2005 à 16:15:33   

Reply

Marsh Posté le 11-02-2005 à 16:24:40    

pom pom pom

Reply

Marsh Posté le 11-02-2005 à 16:43:45    

Tu as déclaré comme il faut ta base access dans le gestionnaire ODBC?
(Source de données ODBC dans Panneau de conf./Outils d'administration)

Reply

Marsh Posté le 11-02-2005 à 16:47:21    

Tite question comme ca: pourquoi tu utilises prepareStatement au lieu de mettre la query dans executeQuery() ?

Reply

Marsh Posté le 11-02-2005 à 17:01:58    

djok_fb a écrit :

Tu as déclaré comme il faut ta base access dans le gestionnaire ODBC?
(Source de données ODBC dans Panneau de conf./Outils d'administration)


 
Pourquoi déclaré car justement j'utilise la méthode de connexion qui n'a pas besoin de la déclaré en source de donnée. Il suffit juste de donner le chemin :
 
http://java.developpez.com/faq/jdb [...] accessOdbc

Reply

Marsh Posté le 11-02-2005 à 17:04:35    

WhatDe a écrit :

Tite question comme ca: pourquoi tu utilises prepareStatement au lieu de mettre la query dans executeQuery() ?


 
Un copier-coller d'une fonction qui donnait des parametres pour le PreparedStatement, dont j'ai supprimer la ligne avec le setInt  :whistle:

Reply

Marsh Posté le 11-02-2005 à 17:08:11    

mazda3 a écrit :

Pourquoi déclaré car justement j'utilise la méthode de connexion qui n'a pas besoin de la déclaré en source de donnée. Il suffit juste de donner le chemin :
 
http://java.developpez.com/faq/jdb [...] accessOdbc


Dans ce cas, il y a peut-être un bout qui manque dans ta URL?

Reply

Marsh Posté le 11-02-2005 à 17:21:49    

djok_fb a écrit :

Dans ce cas, il y a peut-être un bout qui manque dans ta URL?


 
heu ... quel bout ?
 
J'ai TOUT essayé  :  
 

Code :
  1. String url= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=/home/projets/xxxx/xxx/bdd/Analyse.mdb;DriverID=22;READONLY=true}";


 

Code :
  1. String url= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=/home/projets/xxxx/xxx/bdd/Analyse.mdb";


 

Code :
  1. String url= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=home/projets/xxxx/xxx/bdd/Analyse.mdb";


 

Code :
  1. String url= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=\\home\\projets\\xxxx\\xxx\\bdd\\Analyse.mdb";


 

Code :
  1. String url= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=home\\projets\\xxxx\\xxx\\bdd\\Analyse.mdb";


 
Toujours la même erreur !!!!!
 
Le pb c'est que le Tomcat que j'utilise, se situe sur un serveur Linux ... Donc pour installer un pont ODBC sur la machine, c'est pas pour demain  :sweat:  
 
Là je suis bloqué  :sweat:  :cry:


Message édité par Mazda3 le 11-02-2005 à 17:22:51
Reply

Marsh Posté le 11-02-2005 à 17:56:18    

Des infos sur le ODBC JDBC Bridge:
http://java.sun.com/j2se/1.5.0/doc [...] e.doc.html
 
Mais j'ai trouvé ça:
http://www.javaworld.com/javaworld [...] ccess.html
 
Je me souviens d'avoir utilisé ce drivers pour accéder à une base Access, mais pas sans avoir déclaré la source dans Windows...
 
Je pense pas que tu puisses y accèder de Linux comme ça...
 
Mais je peux me tromper...

Reply

Marsh Posté le 11-02-2005 à 18:30:34    

normalement ça marche juste avec le chemin vers la base....ah tiens j'ai utilisé ça au boulot y a pas longtemps, jte trouve le bout de code jreviens.

Reply

Marsh Posté le 11-02-2005 à 18:30:34   

Reply

Marsh Posté le 11-02-2005 à 18:32:58    

Code :
  1. public Connection openConnection() throws SQLException {
  2.             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
  3.             String url= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+ this.base; //this.base ex : c:/base.mdb
  4.             Connection conn = DriverManager.getConnection(url,login,password);
  5.             this.setAccessCon(conn);
  6.             return conn;
  7.     }

Reply

Marsh Posté le 11-02-2005 à 18:55:02    

[:totoz]

Reply

Marsh Posté le 11-02-2005 à 21:52:52    

Glod 2 a écrit :

Code :
  1. public Connection openConnection() throws SQLException {
  2.             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
  3.             String url= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+ this.base; //this.base ex : c:/base.mdb
  4.             Connection conn = DriverManager.getConnection(url,login,password);
  5.             this.setAccessCon(conn);
  6.             return conn;
  7.     }



 
Oui c'est ce que j'ai fait ...

Reply

Marsh Posté le 11-02-2005 à 21:53:08    


 
Très passionnant  :o  

Reply

Marsh Posté le 11-02-2005 à 21:57:08    

mazda3 a écrit :

Très passionnant  :o


 
c'est bien ce qu'il me semble aussi [:kiki]

Reply

Marsh Posté le 11-02-2005 à 22:26:52    

mazda3 a écrit :

Oui c'est ce que j'ai fait ...


ben y a un autre problème alors. T'as les droits sur la base ? Pas d'erreur dans le chemin ?

Reply

Marsh Posté le 12-02-2005 à 12:57:52    

mazda3 > il est chaud à lire ton code !
c'est quoi toutes ces initialisations inutiles et tout ces "truc=null" ?? [:le kneu]
et la gestion des exceptions :/
 
pour qu'il y ait un NPE sur le getConnection, je vois qu'une possibilité : que l'une des variables que tu lui passes soit à null ...


Message édité par benou le 12-02-2005 à 12:58:15
Reply

Marsh Posté le 12-02-2005 à 18:30:13    

benou a écrit :

mazda3 > il est chaud à lire ton code !
c'est quoi toutes ces initialisations inutiles et tout ces "truc=null" ?? [:le kneu]
et la gestion des exceptions :/
 
pour qu'il y ait un NPE sur le getConnection, je vois qu'une possibilité : que l'une des variables que tu lui passes soit à null ...


 
Ce code est conseillé sur le site d'Apache Tomcat pour bien libérer les pools.
Mais bon copier-coller pour ma fonction de test  :D , même si je n'utilise pas les pools avec Access  :whistle:  
 
Sinon dans le code, tu vois bien que je fais une sortie console des parametre et aucune n'est à null ...

Reply

Marsh Posté le 12-02-2005 à 18:42:32    

mazda3 a écrit :

Ce code est conseillé sur le site d'Apache Tomcat pour bien libérer les pools..


url ?

Reply

Marsh Posté le 12-02-2005 à 19:02:27    

Reply

Marsh Posté le 13-02-2005 à 01:17:03    

mais pkoi ils font des closes dans le try si ils les font dans le finally  :heink:  
et pourquoi tous ces "= null"  [:wam]

Reply

Marsh Posté le 13-02-2005 à 01:57:03    

ça doit être une coquille...c'est débile de les faire dans le try.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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