Se connecter / S'enregistrer
Votre question

INSERT INTO ok via ACCESS Too few parameter via ODBC

Tags :
  • string
  • Programmation
Dernière réponse : dans Programmation
15 Janvier 2009 01:19:13

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).



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


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
  1. stmt.execute(sql);

juste après
  1. sql += "\'" + dateMAJ + "\')";

Je me retrouve à
  1. String erreur = e.toString() + " --- " + sql;
et erreur contient
  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

Autres pages sur : insert into via access too few parameter via odbc

a b L Programmation
15 Janvier 2009 20:43:44

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?
m
0
l
17 Janvier 2009 16:35:25

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
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS