2015-04-28 1 views
1

J'ai une classe Java où je construis des requêtes SOQL en utilisant la concaténation String.Comment faire pour échapper correctement les caractères spéciaux (comme - ') dans les requêtes SOQL à partir du code Java?

Existe-t-il une meilleure pratique que quelqu'un peut suggérer pour échapper les caractères spéciaux SOQL comme des guillemets simples?

+0

Bien, il existe une méthode String.escapeSingleQuotes() pour cela. ex: c.lastname = String.escapeSingleQuotes (c.lastname); Question similaire: http://salesforce.stackexchange.com/questions/8505/comment-utiliser-les-quotes-quotes-queurs –

+0

@ShailendraPatel Je cherche un code Java où le post parle du code Salesforce Apex. –

Répondre

-1

Je suis désolé, j'ai mal compris le problème, mon mauvais.

Voici la solution:

1.Utiliser Déclaration préparée.

String data="a'b"; 
String stmt = " INSERT INTO student (column_name) VALUES (?)"; 
PreparedStatement statement= con.prepareStatement(stmt); 
statement.setString(1,data); 
statement.executeUpdate(); 

2.Escapez les guillemets simples. Les guillemets simples peuvent être échappés en utilisant des guillemets simples doubles. '->' '

String data="a'b"; 
String changedUserString = userString.replace("'","''"); 
String insertTableSQL = "INSERT INTO student (column_name) VALUES(" 
         +" '"+data+"')"; 
+0

Etes-vous sûr que c'est SOQL? Langage de requête d'objet Salesforce? –

+0

Utilisez la méthode String.escapeSingleQuotes ou le retour arrière: \ "Hello \". –

+0

@ShailendraPatel, l'OP utilise des liaisons Java pour Salesforce et transmet probablement une chaîne SOQL dans la méthode 'query' de Salesforce Enterprise wsdl. J'essaie une chose similaire. Je n'ai pas trouvé d'échappatoire sur le côté Java - je ne pense pas que la méthode String.escapeSingleQuotes soit disponible pour les développeurs Java. Je m'attends à devoir écrire ma propre méthode d'échappement basée sur la documentation ici http://www.salesforce.com/us/developer/docs/soql_sosl/Content/sforce_api_calls_soql_select_quotedstringescapes.htm – simonh