Requete SQL à une base Access depuis JAVA

Requete SQL à une base Access depuis JAVA - Java - Programmation

Marsh Posté le 28-07-2005 à 22:01:49    

Bonjour à tous,
J'ai un problème pour accéder à une base de données Access depuis JAVA que je n'arrive pas à résoudre depuis plusieurs jours.
Pour me connecter et lire la table pas de problème, ce code fonctionne très bien :

Citation :


import java.sql.*;
public class bdd {
 public static void main(String[] args) {
  try {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
  } catch (ClassNotFoundException e1) {
   e1.printStackTrace();
  }
   
  String url = "jdbc:odbc:whist_db";
 
  Connection con = null;
  try {
   con = DriverManager.getConnection(url);
  } catch (SQLException e1) {
   e1.printStackTrace();
  }
   
  String query = "SELECT * FROM joueurs";
  ResultSet results2;
 
  try {
   Statement stmt = con.createStatement();
   results = stmt.executeQuery(query);
   ResultSetMetaData rsmd = results.getMetaData();
   int nCols = rsmd.getColumnCount();
   boolean encore = results.next();
   while(encore)
   {
    for(int i = 1; i <= nCols; i++)
    {
     System.out.print(results.getString(i) + "  " );
    }
   System.out.println();
   encore = results.next();
   }
   results.close();
  }
 
  catch(Exception e){
   System.out.println("Erreur : " + e.getMessage());
  }
 }
 
}


 
Par contre il m'est impossible d'insérer un enregistrement dans la table. Voici mon code :

Citation :


import java.sql.*;
public class bdd2 {
 public static void main(String[] args) {
  try {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
  } catch (ClassNotFoundException e1) {
   e1.printStackTrace();
  }
   
  String url = "jdbc:odbc:whist_db";
 
  Connection con = null;
  try {
   con = DriverManager.getConnection(url);
  } catch (SQLException e1) {
   e1.printStackTrace();
  }
   
  String query = "INSERT INTO joueurs VALUES (2,'Jean','Jaques') ";
  int results = 0;
 
  try {
   Statement stmt = con.createStatement();
   results = stmt.executeUpdate(query);
  }
  catch(Exception e){
   System.out.println("Erreur : " + e.getMessage());
  }
 }
}


 
Bref, je n'ai aucun problème pour lire les données de la base de données (partie 1) mais impossible d'y enregistrer des données (partie 2)
Qqun saurait-il me dire ce qui ne va pas svp ?


Message édité par Torm13 le 28-07-2005 à 23:45:41
Reply

Marsh Posté le 28-07-2005 à 22:01:49   

Reply

Marsh Posté le 28-07-2005 à 22:06:54    

oui, toi, en commençant par dire quel est le problème.

Reply

Marsh Posté le 28-07-2005 à 23:47:07    

Edit du post : en fait j'arrive sans problème à lire les données de la base mais impossible d'y enregistrer quoi que ce soit !

Reply

Marsh Posté le 28-07-2005 à 23:53:22    

ça tu l'as déjà dit, oui.
* on a pas ta db  
* on a pas le message d'erreur ni rien qui puisse dire quel est vraiment le probleme.
* on a pas de boule de crystal
 
:/

Reply

Marsh Posté le 29-07-2005 à 10:54:35    

La db est composée d'une table "joueurs", cette dernière comporte 3 champs :
id (int)
joueur1 (texte)
joueur2 (texte)
 
Le plus embetant est qu'il n'y a pas de message d'erreur. Quand j'execute le script 2, results vaut 1 (donc un enregistrement a bien été introduit dans la base), mais en ouvrant la base je ne vois pas le nouvel enregistrement et en executant le script 1 non plus...
 
Je pensais que ca venait pe du fait que la requete SQL ne soit pas compatible avec Access, étant donné que j'ai copié le reste d'un livre sur JAVA...
 
Si vous avez d'autres questions n'hésitez pas, je ne sais pas trop quoi dire de plus  :??:


Message édité par Torm13 le 29-07-2005 à 10:57:03
Reply

Marsh Posté le 29-07-2005 à 11:41:28    

Torm13 a écrit :

La db est composée d'une table "joueurs", cette dernière comporte 3 champs :
id (int)
joueur1 (texte)
joueur2 (texte)
 
Le plus embetant est qu'il n'y a pas de message d'erreur. Quand j'execute le script 2, results vaut 1 (donc un enregistrement a bien été introduit dans la base), mais en ouvrant la base je ne vois pas le nouvel enregistrement et en executant le script 1 non plus...
 
Je pensais que ca venait pe du fait que la requete SQL ne soit pas compatible avec Access, étant donné que j'ai copié le reste d'un livre sur JAVA...
 
Si vous avez d'autres questions n'hésitez pas, je ne sais pas trop quoi dire de plus  :??:


 
Il te manquerait pas un close() que ta "Connection" ?  ;)  
Les changements dans ta base sont effectifs à ce moment là si je ne m'abuse !
 
Tiens, je te file un lien net qui m'avait l'air pas mal du tout :
http://www.oreilly.com/catalog/jav [...] /ch04.html
 
Le code fourni a l'air moins crado.
 
a+
 

Reply

Marsh Posté le 29-07-2005 à 11:57:10    

Aaaaaaaaaah MERCIIIIIII !!!!!  :pt1cable:  :pt1cable:  :love:  :love:  
Ouf ca fait un bout de temps que je cherchais cmt faire et tout ca à cause d'un close !  :non:  
En tout cas un grand merci à vous 2 !!  :bounce:  

Reply

Sujets relatifs:

Leave a Replay

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