我想执行如下查询:
uvalue = EditText( some user value );
p_query = "select * from mytable where name_field = '" + uvalue + "'" ;
mDb.rawQuery( p_query, null );
如果用户在输入中输入单引号,它会崩溃。如果您将其更改为:
p_query = "select * from mytable where name_field = \"" + uvalue + "\"" ;
如果用户在输入中输入双引号,它会崩溃。 当然,他们总是可以同时输入单引号和双引号。
最佳答案
您应该使用 rawQuery
方法的 selectionArgs
参数:
p_query = "select * from mytable where name_field = ?";
mDb.rawQuery(p_query, new String[] { uvalue });
这不仅可以解决您的报价问题,还可以缓解 SQL Injection
.
关于sql查询字符串中的Android引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296180/