[JDBC]Passer une valeur dans une requete KO
Bonjour
J'essaie de passer les valeurs de mes ? dans le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
// Put the info in the database and then send a mail for confirmation
try {
Context context = new InitialContext();
DataSource ds = (DataSource) context
.lookup("java:comp/env/jdbc/maDataSource");
Connection conn = ds.getConnection();
try {
conn.setAutoCommit(false);
PreparedStatement st = conn
.prepareStatement("insert into utilisateurs values ('?','ZedroS','password','zedros@zedros.com')");
try {
st.setString(1, "test");
st.executeUpdate();}
finally {
st.close();
}
conn.commit();
} catch (Exception e) {
conn.rollback();
throw e;
} finally {
conn.close();
}
} catch (Exception e) {
throw new RuntimeException(e);
} |
J'ai ensuite l'erreur suivante :
Citation:
java.lang.RuntimeException
org.postgresql.util.PSQLException: L'indice de la colonne est hors limite : 1, nombre de colonnes : 0.
Ma requete passe bien quand je mets mes valeurs en dur. D'après ce que je vois sur la javadoc et mon exemple, je suis dans le vrai...
Au final, je ne comprends franchement pas mon erreur, vous avez des pistes ?
Pour info, j'utilise postgresql.
Merci d'avance
ZedroS
Re: [JDBC]Passer une valeur dans une requete KO
Citation:
Envoyé par ZedroS
Bonjour
J'essaie de passer les valeurs de mes ? dans le code suivant :
Code:
1 2
| PreparedStatement st = conn
.prepareStatement("insert into utilisateurs values ('?','ZedroS','password','zedros@zedros.com')"); |
Bonjour,
par rapport à ce qui a été dit, tu peux très bien mélanger paramètres et valeurs en dur. Si tu as dans la clause values les valeurs pour toutes les colonnes (et dans l'ordre), pas besoin de spécifier les noms des colonnes (même si ca améliore la maintenabilité, imagines qu'on rajoute une colonne).
Par contre pour les paramètres, il ne faut les entourer de ' ' sinon ils sont interprétés comme une chaîne.
Code:
1 2 3
|
PreparedStatement st = conn
.prepareStatement("insert into utilisateurs values (?,'ZedroS','password','zedros@zedros.com')"); |
Eric