Ormlite转义字符串方法?

时间:2011-06-19 05:38:04

标签: android sql string escaping ormlite

是否有针对Android的Ormlite转义字符串的原生方式?

例如,如果我想提供一个字符串:ormlite的escape func,它需要作为ormlite的escape func提供。

TestDao.queryForFirst(TestDao.queryBuilder().where().like("stats", stats)
    .prepare())

我尝试使用UpdateBuilder的escapeValue方法,但它只进行了以下更改: 'ormlite的逃避功能'。它在语句的开头和结尾添加单引号。是否存在对sql注入安全的转义字符串的原生支持?

如果没有,有什么方法可以做到?

谢谢!

1 个答案:

答案 0 :(得分:16)

  

我尝试使用UpdateBuilder的escapeValue方法,但它只进行了以下更改:'ormlite的escape func'。它在语句的开头和结尾添加单引号。是否存在对sql注入安全的转义字符串的原生支持?

这是常见问题解答。执行此操作的正确方法是使用SelectArg参数,以便SQL可以使用?构造类型。这是另一个question talking about this

SelectArg selectArg = new SelectArg(stats);
TestDao.queryForFirst(
    TestDao.queryBuilder().where().like("stats", selectArg).prepare());

以下是select-arg functionality的文档。

修改

正如@Moritz指出的那样,如果您实际上正在更新数据库,您还可以将SelectArgUpdateBuilder一起使用:

SelectArg arg = new SelectArg("Some value");
updateBuilder.updateColumnValue(MY_COLUMN, arg);