Voilà mon problème,
j'ai créé une base de donnée sous Access et j'aimerais implementer toute la programmation sous java.
J'ai donc chargé les drivers, créé les connections etc mais il se trouve que le driver odbc ne veut pas prendre la requete.
Pour l'exemple, je souhaite aller voir dans une table localite_CP et recuperer le cp associé à une localite via cette requete
SELECT codePostal FROM Localite_CP WHERE localite ="Mons"
sauf que Mons est la valeur du String localite.
Pour ce, je fais ceci:
Seulement je me retrouve avec ceci:
Et pourtant si je fais ceci, ça marche mais alors je charge toute la table
Vous avez une idee pour resoudre ce probleme?
Serait-ce possible qu'il faille modifier les resquetes SQL pour ce driver? Ce serait quand même bien chiant...
Merci
j'ai créé une base de donnée sous Access et j'aimerais implementer toute la programmation sous java.
J'ai donc chargé les drivers, créé les connections etc mais il se trouve que le driver odbc ne veut pas prendre la requete.
Pour l'exemple, je souhaite aller voir dans une table localite_CP et recuperer le cp associé à une localite via cette requete
SELECT codePostal FROM Localite_CP WHERE localite ="Mons"
sauf que Mons est la valeur du String localite.
Pour ce, je fais ceci:
Code:
public int getCodePostalDeLocalite(String localite) throws SQLException{
String requete = "SELECT codePostal FROM Localite_CP WHERE localite =\"" + localite + "\"";
System.out.println(requete);
//String requete = "SELECT * FROM Localite_CP"; //avec ca ca marche
boolean foundResults = statement.execute(requete);
if(foundResults){
ResultSet set = statement.getResultSet();
do{
set.next();
if(localite.equals(set.getString("localite"))) return set.getInt("codePostal");
} while (set.isLast() != false);
}
return Lieu.CODE_POSTAL_DEFAUT; //ne devrait jamais se produire
}
Code:
run-single:
SELECT codePostal FROM Localite_CP WHERE localite ="Mons"
java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 1 attendu.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
6460
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at elements.DB.getCodePostalDeLocalite(DB.java:60)
at elements.Lieu.readCodePostal(Lieu.java:135)
at elements.Lieu.getCodePostal(Lieu.java:70)
at elements.TestAdresse.main(TestAdresse.java:24)
Code:
public int getCodePostalDeLocalite(String localite) throws SQLException{
String requete = "SELECT * FROM Localite_CP";
boolean foundResults = statement.execute(requete);
if(foundResults){
ResultSet set = statement.getResultSet();
do{
set.next();
if(localite.equals(set.getString("localite"))) return set.getInt("codePostal");
} while (set.isLast() != false);
}
return Lieu.CODE_POSTAL_DEFAUT; //ne devrait jamais se produire
}
Serait-ce possible qu'il faille modifier les resquetes SQL pour ce driver? Ce serait quand même bien chiant...
Merci