Il y a actuellement 326 visiteurs
Mardi 05 Novembre 2024
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

SangJun

Ce membre n'a pas encore choisi d'avatar
Visiteur
Visiteur
Nom d'utilisateur:
SangJun
Groupes:

Contacter SangJun

Statistiques de l’utilisateur

Inscription:
15 Jan 2009 00:01
Dernière visite:
15 Jan 2009 00:04
Messages:
1 (0.00% de tous les messages / 0.00 messages par jour)
Forum le plus actif:
Forum Programmation, Web & Ftp
(1 Message / 100.00% des messages de l'utilisateur)
Sujet le plus actif:
INSERT INTO ok via ACCESS Too few parameter via ODBC
(1 Message / 100.00% des messages de l'utilisateur)

Les derniers messages de SangJun

Message INSERT INTO ok via ACCESS Too few parameter via ODBC
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: Tout sélectionner
    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
Code: Tout sélectionner
stmt.execute(sql);

juste après
Code: Tout sélectionner
sql += "'" + dateMAJ + "')";

Je me retrouve à
Code: Tout sélectionner
String erreur = e.toString() + " --- " + sql;
et erreur contient
Code: Tout sélectionner
"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



.: Nous contacter :: Flux RSS :: Données personnelles :.