是否有针对Android的Ormlite转义字符串的原生方式?
例如,如果我想提供一个字符串:ormlite的escape func,它需要作为ormlite的escape func提供。
TestDao.queryForFirst(TestDao.queryBuilder().where().like("stats", stats)
.prepare())
我尝试使用UpdateBuilder的escapeValue方法,但它只进行了以下更改: 'ormlite的逃避功能'。它在语句的开头和结尾添加单引号。是否存在对sql注入安全的转义字符串的原生支持?
如果没有,有什么方法可以做到?
谢谢!
答案 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指出的那样,如果您实际上正在更新数据库,您还可以将SelectArg
与UpdateBuilder
一起使用:
SelectArg arg = new SelectArg("Some value");
updateBuilder.updateColumnValue(MY_COLUMN, arg);