Bonjour,

Ayant parcouru de nombreux tutoriaux et forums, j'en arrive à me poser la question suivante :

Lorsqu'on compile et exécute ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
UPDATE Stocks SET prix = 256 WHERE nom = café
ou :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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!