JAVA+ACCESS

JAVA+ACCESS - Java - Programmation

Marsh Posté le 27-04-2004 à 19:19:27    

Ja voudrai interfacer une base de données access par une interface en java, hors je suis débutant donc je vous réclame un peu d'indulgence quant à ma nullité en JAVA.
 
Je voudrai faire une requete d'insertion de données dans Access seulement pour cela je stocke mes valeur à insérer dans un objet de type vector (que je caste avec du string) et tout simplement je ne vois aucun moyen d'envoyer des données de type entier dans la base de données.
A chaque fois ça m'affiche un message d'erreur comme quoi les types de données sont incompatibles.
 
Donc ma question est la suivante : comment envoyer des données de type entier dans une base de données access ???
 
je vous joint mon code en espérant que cela vous éclaire car je suis conscient que mon problème est mal expliqué.
 
Au pire des cas sinon si vous avez un lien sur un tutorial JAVA + Access cela pourrait déjà m'aider...
 

Code :
  1. public void ajoutDonnee()
  2.      {
  3.            //Recuperation des donnees liste deroulante
  4.            int num = ListeE.getSelectedIndex();
  5.            //On récupere les donnees du formulaire
  6.            String sNom = Nom.getText();
  7.            String sPrenom = Prenom.getText();
  8.            String sTel = Tel.getText();
  9.            String sFonction = Fonction.getText();
  10.            //int n = Integer.valueOf((String) Snom.elementAt(num)).intValue();
  11.            //driver de connexion a la base de donnees
  12.            String data = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb); DBQ=D:/MesDocuments/JAVAIIE/ProjetJAVAIIE/JAVA.mdb;";
  13.            try{
  14.              //connexion a la base de donnees
  15.              Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
  16.              Connection con = DriverManager.getConnection(data,"","" );
  17.              Statement st = con.createStatement();
  18.              //String maj2 = "SELECT numet FROM ETABLISSEMENT where nomet='"+(String) Snom.elementAt(num)+"')";
  19.              //definition et execution de requete d insertion
  20.              String maj = "INSERT INTO CONTACT (nom, prenom, tel, fonction, numet) VALUES ('"+sNom+"','"+sPrenom+"','"+sTel+"','"+sFonction+"')";
  21.              st.executeUpdate(maj);
  22.            }
  23.            catch (Exception e){System.out.println("erreur :" +e.toString());}
  24.      }


 
merci d'avance

Reply

Marsh Posté le 27-04-2004 à 19:19:27   

Reply

Marsh Posté le 28-04-2004 à 10:08:41    

Salut,
Voici quelques pistes :
 - Puisque ton vecteur contient des Strings et que tu fabriques une requête SQL sous forme de String, tu n'as meme pas besoin de faire de conversion... Tu peux te contenter de récupérer la valeur dans ton vecteur comme un String et ajouter celui-ci dans ta requête...
 - De manière générale, pour éviter les problèmes de types de données, je te recommande d'utiliser un PreparedStatement plutôt qu'un Statement classique. Pour résumer, un PreparedStatement se construit avec une requête ou toutes les valeurs sont remplacées par des "?". Ensuite tu dois spécifier chaque valeur avec les méthodes setString(), setInteger(), etc. Cela t'évite d'avoir à gérer toi meme la correspondance entre types de données java et syntaxe SQL (qui t'oblige par exemple a mettre des apostrophes pour les chaînes de caractères).

Reply

Marsh Posté le 28-04-2004 à 11:29:24    

Merci pour la réponse en fait j'ai trouvé la solution dans la nuit, je la posterai un peus plus tard (je suis au boulot), sinon ma solution est différente mais je vais essayer la tienne qui me semble appropriée sur bien des points  
 
@+

Reply

Marsh Posté le 28-04-2004 à 14:42:22    

OK, content que tu aies trouvé.
Si tu as des questions n'hésite pas  :hello:  

Reply

Sujets relatifs:

Leave a Replay

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