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
  • asp之家 软件编程 m.aspxhome.com