Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplacer les ' par des ' pour une requète SQL

4 réponses
Avatar
Frédéric Moser
Bonjour,

Je cherche qu'elle est le meilleur moyen de remplacer les caractères pas
cool en Java comme " ' \ par des \', \", \\ dans une requète SQL.
Je me souviens que ça existe en PHP... mais j'ai cherché dans la doc de
l'API Java et j'ai rien trouvé.

J'ai bien essayé monString.replaceAll("'", "\'") mais ça ne marche pas,
càd le \ pose problème.

Comment s'y prend on alors en général?


Merci d'avance ;-)


Fred

4 réponses

Avatar
Isammoc
Frédéric Moser écrivait
news:410e0243$0$29380$:

Bonjour,

Je cherche qu'elle est le meilleur moyen de remplacer les caractères pas
cool en Java comme " ' par des ', ", dans une requète SQL.
Je me souviens que ça existe en PHP... mais j'ai cherché dans la doc de
l'API Java et j'ai rien trouvé.

J'ai bien essayé monString.replaceAll("'", "'") mais ça ne marche pas,
càd le pose problème.

Comment s'y prend on alors en général?


pour le
essaye remplacé par \

car est aussi un caractère d'échappement en java...

Merci d'avance ;-)


Tu mer remercieras si ca marche (pas testé)

Fred


--
Isammoc

Avatar
Sebastien
Si tu crains d'avoir des caractères comme "'" dans ta requête SQL, utilise des PreparedStatement.
C'est bien plus propre que d'essayer de remplacer tous les caractères qui pourraient corrompre ta
requête.

Sébastien.

Isammoc wrote:
Frédéric Moser écrivait
news:410e0243$0$29380$:


Bonjour,

Je cherche qu'elle est le meilleur moyen de remplacer les caractères pas
cool en Java comme " ' par des ', ", dans une requète SQL.
Je me souviens que ça existe en PHP... mais j'ai cherché dans la doc de
l'API Java et j'ai rien trouvé.

J'ai bien essayé monString.replaceAll("'", "'") mais ça ne marche pas,
càd le pose problème.

Comment s'y prend on alors en général?



pour le
essaye remplacé par \

car est aussi un caractère d'échappement en java...


Merci d'avance ;-)



Tu mer remercieras si ca marche (pas testé)


Fred






Avatar
trickyfox
Essaye donc cette methode magique :-)

///////////////////////////// CLASSE SQLUTILS //////////////////////////

import java.sql.*;

public class SQLUtils{

/** objet pour faire tes requetes*/
private static Statement statement;

/** objet de connection a la base*/
private static Connection connection;

/** mot de passe de l'utilisateur */
private final static String PASSWORD = "";

// creation de la connection
static{
try {
Class.forName(DRIVER_MYSQL);
} catch (ClassNotFoundException e) {
System.out.println(e.getMessage());
}
}

/**
* <p>
* Ouvre la connection a la base donne dans l'interface {@link SQLConstants}.
* </p>
* @throws SQLException si la connection n'a pu etre etablie
*/
public static Statement createSQLConnection() throws SQLException {
// remplace URL,USER et PASSWORD par tes valeurs a toi
connection = DriverManager.getConnection(URL, USER, PASSWORD);
statement = connection.createStatement();
return statement;
}

/**
* <p>
* Permet d'obtenir l'objet utilisee pour la connection
* </p>
*/
public static Connection getConnection(){
return connection;
}


}

/////////////////////////////// CLASSE DU TON DE TON CHOIX //////////////

// je mets pas les imports necessaires
public class MaClasse {

public static String addSlashes(String str){
String newStr = new String();

// les deux lignes servent a recuperer des meta informations sur la base
// de donnees en elle meme.
Connection conn = SQLUtils.getConnection();
DatabaseMetaData rmd = conn.getMetaData();
try{
StringTokenizer stoken = new StringTokenizer(oldQuery,"'");
while ( true ){
newStr += (String) stoken.nextElement();
if ( stoken.hasMoreElements() )
newStr += conn.getSearchStringEscape() + "'";
else
break;
}
}
catch( Exception e) { }

return newQuery;
}
}

/////////////////////// une utilisation possible ////////

public static void main(String[] args){
String s = MaClasse.addSlashes("l'expert en java existe.");
System.out.println(s);
}

Cette methode va alors t'afficher a l'ecran :

l'expert en java

A+ En cas de prb reviens sur le forum.
Avatar
Cédric Chabanois
Ouai, en plus je suppose qu'une partie de la requête est générée à
l'aide d'une chaîne entrée par le client (genre chaîne de recherche).
Si c'est le cas, attends-toi au pire si il essaie de passer un bout de
code SQL. Niveau sécurité c'est pas top.

Utilise un PreparedStatement, il n'y a que des avantages ...

Cédric

Si tu crains d'avoir des caractères comme "'" dans ta requête SQL,
utilise des PreparedStatement. C'est bien plus propre que d'essayer de
remplacer tous les caractères qui pourraient corrompre ta requête.

Sébastien.

Isammoc wrote:

Frédéric Moser écrivait
news:410e0243$0$29380$:


Bonjour,

Je cherche qu'elle est le meilleur moyen de remplacer les caractères
pas cool en Java comme " ' par des ', ", dans une requète SQL.
Je me souviens que ça existe en PHP... mais j'ai cherché dans la doc
de l'API Java et j'ai rien trouvé.

J'ai bien essayé monString.replaceAll("'", "'") mais ça ne marche
pas, càd le pose problème.

Comment s'y prend on alors en général?




pour le
essaye remplacé par \

car est aussi un caractère d'échappement en java...


Merci d'avance ;-)




Tu mer remercieras si ca marche (pas testé)


Fred