Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
作者:junjie 时间:2023-09-12 14:04:06
由于考虑到数据库的安全性,不被轻易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+"%"};
可能有人会问为什么不用添加引号,因为参数代替?号时,自动以字符串的形式代替的。
标签:Android,LIKE
0
投稿
猜你喜欢
Java负载均衡算法实现之轮询和加权轮询
2023-07-16 15:27:17
Java 关于时间复杂度和空间复杂度的深度刨析
2023-11-10 16:07:39
使用java实现http多线程断点下载文件(一)
2023-11-23 15:45:51
Java IO异常如何处理详析
2023-12-04 21:51:29
SpringBoot选择自有bean优先加载实现方法
2023-05-21 06:22:39
C#简单获取全屏中鼠标焦点位置坐标的方法示例
2023-09-14 16:18:04
Android解析json数组对象的方法及Apply和数组的三个技巧
2023-04-11 11:52:56
Android 通过自定义view实现水波纹效果案例详解
2022-01-12 06:03:48
在当前Activity之上创建悬浮view之WindowManager悬浮窗效果
2023-02-09 21:02:12
Android日期选择器实现年月日三级联动
2022-12-13 03:35:59
c#删除代码中的单行注释行示例
2023-05-11 22:44:49
Java中ArrayList与顺序表的概念与使用实例
2023-01-09 03:50:30
关于Android中ListView嵌套GridView的问题
2023-09-16 10:56:39
Android编程实现3D立体旋转效果的实例代码
2023-04-01 13:40:50
springboot2.x使用Jsoup防XSS攻击的实现
2023-11-17 06:40:47
Android实现带数字的圆形进度条(自定义进度条)
2023-07-19 21:37:20
Springboot通过谷歌Kaptcha 组件生成图形验证码功能
2021-07-24 23:42:47
Android实现购物车及其他功能的角标
2021-12-24 10:54:54
Android逆向入门之常见Davlik字节码解析
2023-09-13 02:53:10
BeanUtils.copyProperties使用总结以及注意事项说明
2023-06-27 18:06:18