android之Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
2014-11-04 18:27
721 查看
由于考虑到数据库的安全性,不被轻易SQL注入,执行查询语句时,一般不使用直接拼接的语句,而是使用参数传递的方法。然后在使用参数传递的方法中时,发现当使用like方式查询数据时,很容易出现一个问题。
错误案例:
复制代码代码如下:
String myname = "abc";
String sql = "select * from mytable where name like '?%'";
Cursor cursor = db.rawQuery(sql, new String[]{myname};
运行提示如下错误:
复制代码代码如下:
java.lang.IllegalArgumentException: Cannot bind argument at index 1 because the index is out of range. The statement has 0 parameters.
根据错误提示可知,sql语句中的?号没有被识别出来,从而new String[]{myname}没法替代sql中的?号。?号没有被识别出来的原因估计是?号外有单引号,但是在sql中like语句的值和%号需要用引号围着。
为了解决sql中?号无法识别,必须去掉?号外的引号,那么%号也需要去掉。所以,得在后面代替?号的参数中添加上%号。
所以,正确的案例如下:
复制代码代码如下:
String myname = "abc";
String sql = "select * from mytable where name like ?";
Cursor cursor = db.rawQuery(sql, new String[]{myname+"%"};
错误案例:
复制代码代码如下:
String myname = "abc";
String sql = "select * from mytable where name like '?%'";
Cursor cursor = db.rawQuery(sql, new String[]{myname};
运行提示如下错误:
复制代码代码如下:
java.lang.IllegalArgumentException: Cannot bind argument at index 1 because the index is out of range. The statement has 0 parameters.
根据错误提示可知,sql语句中的?号没有被识别出来,从而new String[]{myname}没法替代sql中的?号。?号没有被识别出来的原因估计是?号外有单引号,但是在sql中like语句的值和%号需要用引号围着。
为了解决sql中?号无法识别,必须去掉?号外的引号,那么%号也需要去掉。所以,得在后面代替?号的参数中添加上%号。
所以,正确的案例如下:
复制代码代码如下:
String myname = "abc";
String sql = "select * from mytable where name like ?";
Cursor cursor = db.rawQuery(sql, new String[]{myname+"%"};
相关文章推荐
- Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
- ACCESS模糊查询like的解决方法&&SQL查询语句通配符问题
- 关于数据库查询语句SqlDataReader的连接释放问题的解决办法
- ACCESS模糊查询like的解决方法&&SQL查询语句通配符问题
- Hibernate中多表联合查询遇到的问题(原生态的SQL语句解决办法)
- SQL查询语句通配符与ACCESS模糊查询like的解决方法
- 解决SQL语句中含有中文字符无法查询问题
- 关于SQL查询语句TOP 后面跟参数的解决方法
- 在access的vba中循环调用带参数查询时遇到的问题及解决办法
- 关于执行Oracle下Sql语句中遇到的特殊字符问题解决办法。
- Android照相机模块编程 照片颠倒问题及查询摄像头参数问题的解决
- SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
- "执行SQL语句时出现问题操作必须使用一个可更新的查询"错误的解决方法
- 从sql库里读取二进制图片的问题 (参数无效 未处理ArgumentException 错误的解决办法)
- SQL查询语句通配符与ACCESS模糊查询like的解决方法
- 解决存储过程中SQL字符串语句执行引入参数的问题
- sql语句带参数的模糊查询 (like @tag+'%')
- 关于mysql中sql语句查询不区分大小写的解决办法
- 无法找到SQLFile.SQL导致在SQL Server Studio中无法创建新的查询问题的解决办法
- Your content must have a TabHost whose id attribute is 'android.R.id.tabhost' 问题,写了id语句仍出错的解决办法