Tom's Guide > Forum > Programmation > INSERT INTO ok via ACCESS Too few parameter via ODBC

INSERT INTO ok via ACCESS Too few parameter via ODBC

Forum Programmation : INSERT INTO ok via ACCESS Too few parameter via ODBC

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonsoir à tous,

Je n'arrive pas à résoudre un problème et encore moins à le comprendre.

Je travaille avec Java et ACCESS, je crée une table et juste ensuite je fais un insert into (ou plutôt plusieurs dans une boucle FOR).



Code :
  1. try{
  2.         CalculHoraire calcHor = new CalculHoraire();
  3.         laDate = calcHor.stringToDate(jTextFieldLaDate.getText(), "yyyy-MM-dd" );
  4.             BufferedReader LecteurBufferise = null;
  5.             String ligneDonnee;
  6.             boolean eof = false;
  7.             try {
  8.               //Ouverture du Fichier
  9.               LecteurBufferise = new BufferedReader(new FileReader(nomFichierHoraireComplet));
  10.               String sql="";
  11.               try
  12.                 {
  13.                     //  Connect to the Database
  14.                     String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
  15.                     //String url = "jdbc:odbc:Teenergy";  // if using ODBC Data Source name
  16.                     String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+fichierDestination.getAbsolutePath();
  17.                     String userid = "";
  18.                     String password = "";
  19.                     Class.forName( driver );
  20.                     Connection connection = DriverManager.getConnection( url, userid, password );
  21.                     //  Read data from a table
  22.                     sql = "CREATE TABLE MaTable (" +
  23.                             "Code Char(4), " +
  24.                             "Sens Char(1), " +
  25.                             "Num Integer, " +
  26.                             "Hor Char(8))";
  27.                     Statement stmt = connection.createStatement();
  28.                     stmt.execute(sql);
  29.                     while (eof != true) {
  30.                         //Lecture de la ligne
  31.                         ligneDonnee = LecteurBufferise.readLine();
  32.                         if(ligneDonnee!=null)
  33.                         {
  34.                             String donneesLignes[] = ligneDonnee.split(";" );
  35.                             if(donneesLignes[1].compareTo(""+laLigne.trajet+"" )==0 && donneesLignes[0].charAt(0)==laLigne.sens)
  36.                             {
  37.                                     sql = "insert into MaTable (Code, Sens, Num, Hor) " +
  38.                                             "values (" ;
  39.                                     sql += "\"" + laLigne.code + "\", ";
  40.                                     sql += "\'" + donneesLignes[0].charAt(0) + "\', ";
  41.                                     sql += donneesLignes[1] + ", ";
  42.                                     sql += "\'" + dateMAJ + "\')";
  43.                                    
  44.                                     stmt.execute(sql);
  45.                                 }
  46.                             }
  47.                         }else
  48.                         {
  49.                             eof=true;
  50.                         }
  51.                     stmt.close();
  52.                     jLabelErreurLaDate.setText("OK" );
  53.                 }
  54.                 catch(Exception e)
  55.                 {
  56.                     String erreur = e.toString() + " --- " + sql;
  57.                     jLabelErreurLaDate.setText(erreur);
  58.                 }
  59.             }
  60.             catch (FileNotFoundException ex) {
  61.               jLabelErreurLaDate.setText("Fichier Non Trouvé !!" );
  62.             }
  63.             catch (IOException ex) {
  64.               jLabelErreurLaDate.setText("Erreur lecture ligne fichier !!" );
  65.             }
  66.             finally {
  67.                 try {
  68.                     LecteurBufferise.close();
  69.                 }catch (IOException ex1) {
  70.                     jLabelErreurLaDate.setText("Erreur fermeture fichier !!" );
  71.                 }
  72.             }
  73.     }catch(Exception e)
  74.     {
  75.         jLabelErreurLaDate.setText("Erreur : " + e.toString());
  76.     }



Toujours la même erreur.
Je me suis dit, faisons un copié-collé de la variable sql et lançons la "à la main" dans une requête depuis ACCESS, le résultat pourrait me donner plus d'informations. Et là, surprise, le tuple est ajouté.
Je me retrouve dans une situation qui me laisse très perplexe.

Je lance en mode debug.
Les champs sont bons, arrivé à la ligne

Code :
  1. stmt.execute(sql);


juste après

Code :
  1. sql += "\'" + dateMAJ + "\')";


Je me retrouve à

Code :
  1. String erreur = e.toString() + " --- " + sql;

et erreur contient

Code :
  1. "java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. --- insert into MaTable (Code, Sens, Num, Hor) values ("17", 'A', 1, '06:57:00')"




Quelqu'un pourrait-il m'apporter son aide?
Merci d'avance

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Est-ce que c'est juste un problème sur l'insert ? ou as-tu le même problème quelle que soit la commande SQL?

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Too few parameters indique qu'il te manque un champ quelque part.

de mémoire, il me semble que les dates dans access devaient étre entourées de #

si ca peut aider

------------------------------ www.saisons-vives.com
Répondre à rippergun
Tom's Guide > Forum > Programmation > INSERT INTO ok via ACCESS Too few parameter via ODBC
Aller à :

Il y a 1234 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens