problème apostrophes requetes SQL SERVER
Bonjour , je dois maintenir et faire évoluer une application JAVA/SWING qui inter agit avec une base de données SQL SERVER.
Le développeur n'avait pas pris en compte la gestion des apostrophes dans les requêtes.
Du coup je suis un peu perdu.
Sachant qu'il a créé une classe dédiée aux requêtes SQL:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| public boolean executeQuery(String query, Vector data) {
if (conn == null)
return false;
if (data == null) {
data = new Vector();
}
try {
log.debug("query: " + query);
Statement stmt = conn.createStatement() ;
ResultSet rs = stmt.executeQuery( query );
int i = 0, max=0;
// Loop through the result set
while( rs.next() ) {
ResultSetMetaData rsmd = rs.getMetaData();
max = rsmd.getColumnCount();
// log.debug("number cols:" + max);
// String s = i + ". ";
Vector row = new Vector();
for (int j=1; j<max+1; j++) {
row.add(rs.getString(j));
// s += rs.getString(j) + ":";
}
data.add(row);
i++;
// log.debug(s);
}
log.debug("rows: " + data.size());
rs.close() ;
}
catch( SQLException se )
{
log.error( "SQL Exception:" ) ;
// Loop through the SQL Exceptions
while( se != null )
{
log.error( "State : " + se.getSQLState() ) ;
log.error( "Message: " + se.getMessage() ) ;
log.error( "Error : " + se.getErrorCode() ) ;
se = se.getNextException() ;
}
return false;
}
catch( Exception e )
{
log.fatal("FATAL:", e);
return false;
}
return true;
} |
J'avais pensé à utiliser la fonction replace de Java String.
replace("'","''"); Mais le probleme c'est qu'en entrée je reçois des requetes toutes faites.
exemple
UPDATE TABLE SET CHAMP = 'VALUE'
où la valeur peut être l'heure
Si j'appelle le replace
J'aurais au finale :
UPDATE TABLE SET CHAMP = ''l''heure'' et qui ne marche pas.
Existe-t-il une solution plus ad equate que de faire un String replace sur chaque chammp récupéré avant d'envoyer la requête ? merci