JDO for Google App Engine:转义引号

5

我该如何在JDO(Google App Engine)中转义查询参数?

例如,如果变量名称可能包含不安全字符,如单引号('),那么如何使下面的代码片段更安全?

PersistenceManager pm = ...;
String query = "select from Person where name='"+name+"'";
List<Shortened> shortened = (List<Shortened>) pm.newQuery(query).execute();

我这里有一些更多的代码和参考资料 http://stackoverflow.com/questions/9552064/appengine-datastore-query-escaping-single-quote/9552818#9552818 - Win Myo Htet
1个回答

11
请改用查询参数,这比在查询本身中包含值更安全。以下是来自GAE文档的示例:
Query query = pm.newQuery("select from Employee " +
                          "where lastName == lastNameParam " +
                          "order by hireDate desc " +
                          "parameters String lastNameParam");

List<Employee> results = (List<Employee>) query.execute("Smith");

+1巨量。我希望有一种方法,如果您尝试在查询中使用字符串替换,可以使计算机爆炸。 - Nick Johnson
不幸的是,GAE文档示例使用String query = "..."样式,至少我找到的页面是这样的。我找不到从哪里导入Query,但我还没有仔细查看,我会找到的! :) - Olie
1
顺便说一句,这是: import javax.jdo.Query; 给下一个人看的。显然。;) - Olie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接