SangJun | 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 :
- try{
- CalculHoraire calcHor = new CalculHoraire();
- laDate = calcHor.stringToDate(jTextFieldLaDate.getText(), "yyyy-MM-dd" );
- BufferedReader LecteurBufferise = null;
- String ligneDonnee;
- boolean eof = false;
- try {
- //Ouverture du Fichier
- LecteurBufferise = new BufferedReader(new FileReader(nomFichierHoraireComplet));
- String sql="";
- try
- {
- // Connect to the Database
- String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
- //String url = "jdbc:odbc:Teenergy"; // if using ODBC Data Source name
- String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+fichierDestination.getAbsolutePath();
- String userid = "";
- String password = "";
- Class.forName( driver );
- Connection connection = DriverManager.getConnection( url, userid, password );
- // Read data from a table
- sql = "CREATE TABLE MaTable (" +
- "Code Char(4), " +
- "Sens Char(1), " +
- "Num Integer, " +
- "Hor Char(8))";
- Statement stmt = connection.createStatement();
- stmt.execute(sql);
- while (eof != true) {
- //Lecture de la ligne
- ligneDonnee = LecteurBufferise.readLine();
- if(ligneDonnee!=null)
- {
- String donneesLignes[] = ligneDonnee.split(";" );
- if(donneesLignes[1].compareTo(""+laLigne.trajet+"" )==0 && donneesLignes[0].charAt(0)==laLigne.sens)
- {
- sql = "insert into DebutHoraire (Code, Sens, Num, Hor) " +
- "values (" ;
- sql += "\"" + laLigne.code + "\", ";
- sql += "\'" + donneesLignes[0].charAt(0) + "\', ";
- sql += donneesLignes[1] + ", ";
- sql += "\'" + dateMAJ + "\')";
-
- stmt.execute(sql);
- }
- }
- }else
- {
- eof=true;
- }
- stmt.close();
- jLabelErreurLaDate.setText("OK" );
- }
- catch(Exception e)
- {
- String erreur = e.toString() + " --- " + sql;
- jLabelErreurLaDate.setText(erreur);
- }
- }
- catch (FileNotFoundException ex) {
- jLabelErreurLaDate.setText("Fichier Non Trouvé !!" );
- }
- catch (IOException ex) {
- jLabelErreurLaDate.setText("Erreur lecture ligne fichier !!" );
- }
- finally {
- try {
- LecteurBufferise.close();
- }catch (IOException ex1) {
- jLabelErreurLaDate.setText("Erreur fermeture fichier !!" );
- }
- }
- }catch(Exception e)
- {
- jLabelErreurLaDate.setText("Erreur : " + e.toString());
- }
|
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
juste après Code :
- sql += "\'" + dateMAJ + "\')";
|
Je me retrouve à Code :
- String erreur = e.toString() + " --- " + sql;
|
et erreur contient Code :
- "java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. --- insert into DebutHoraire (Code, Sens, Num, Hor) values ("17", 'A', 1, '06:57:00')"
|
Quelqu'un pourrait-il m'apporter son aide?
Merci d'avance |