Ormlite转义字符串方法?

the*_*ion 9 sql string android escaping ormlite

Ormlite for Android是否有本地方式转义字符串?

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

TestDao.queryForFirst(TestDao.queryBuilder().where().like("stats", stats)
    .prepare())
Run Code Online (Sandbox Code Playgroud)

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

如果没有,有什么办法呢?

谢谢!

Gra*_*ray 17

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

这是一个FAQ.执行此操作的正确方法是使用SelectArg参数,以便SQL可以使用?构造类型.这是另一个谈论这个问题.

SelectArg selectArg = new SelectArg(stats);
TestDao.queryForFirst(
    TestDao.queryBuilder().where().like("stats", selectArg).prepare());
Run Code Online (Sandbox Code Playgroud)

这是有关select-arg功能的文档.

编辑:

作为@Moritz指出,如果你实际上是在更新数据库,你也可以使用SelectArgUpdateBuilder:

SelectArg arg = new SelectArg("Some value");
updateBuilder.updateColumnValue(MY_COLUMN, arg);
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,这也适用于更新语句:`SelectArg arg = new SelectArg(); arg.setValue(“ Some value”); updateBuilder.updateColumnValue(MY_COLUMN,arg);` (2认同)