Bonjour,
Ayant parcouru de nombreux tutoriaux et forums, j'en arrive à me poser la question suivante :
Lorsqu'on compile et exécute ce code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import java.sql.*;
import javax.sql.*;
public class Test
{
public static void main(String[] args) throws Exception
{
String URL = "jdbc:postgresql://localhost:5432/blih";
String driver ="org.postgresql.Driver";
Connection con = null;
Class.forName(driver);
con = DriverManager.getConnection(URL,"bluh","blah");
String sql = "UPDATE Stocks SET prix = ? WHERE nom = ?";
PreparedStatement preparedStatement = con.prepareStatement(sql);
preparedStatement.setInt(1,256);
preparedStatement.setString(2,"café");
System.out.println(preparedStatement);
con.close();
}
} |
Doit on avoir comme résultat :
UPDATE Stocks SET prix = 256 WHERE nom = café
ou :
UPDATE Stocks SET prix = 256 WHERE nom = 'café'
C'est à dire : est-ce que setString ne devrait pas mettre de lui même les quotes autour des chaînes passées en paramètre? Ou doit on les entourer à chaque fois par nous même?
Dans de nombreux documents, les chaines ne sont pas entourées de quotes, or, dès qu'il y a un espace ou que la chaîne est vide, la requête devient invalide.
Voir les url suivantes :
http://java.sun.com/docs/books/tutor.../prepared.html
http://java.developpez.com/faq/jdbc/...paredStatement
Ce qui fait que dans mon application, je me retrouve avec des requêtes pareilles :
update t_table set id_cv=, id_bug=, id_bug_test=erv, dis_date=1970-01-01 +01:00:00, dated=0, last_update=2009-04-10 16:23:54.644000 +02:00:00, version=,[...]

La requête est préparée ainsi :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| sSQL = "update t_table set "
+ " id_cv=?,"
+ " id_bug=?,"
+ " id_bug_test=?,"
+ " dis_date=?, "
+ " dated=?, "
+ " last_update=?,"
+ " version=?, "
[...]
updatePS = p_conn.prepareStatement(sSQL);
try {
updatePS.setString(1, sIdCve);
updatePS.setString(2, idBug);
updatePS.setString(3, idBugTest);
updatePS.setDate(4, oDisDate);
[...] |
J'attends vos avis avant de me relancer dans un ajout massif de quotes!
Partager