Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)

 更新时间:2014年06月12日 08:59:53   投稿:junjie  
这篇文章主要介绍了Android中的SQL查询语句LIKE绑定参数问题解决办法,本文使用的是sqlite数据库,需要的朋友可以参考下

由于考虑到数据库的安全性,不被轻易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 NDK开发(C语言--联合体与枚举)

    Android NDK开发(C语言--联合体与枚举)

    这篇文章主要介绍了Android NDK开发C语言联合体与枚举,共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。下面详细介绍该内容,需要的朋友可以参考一下
    2021-12-12
  • Android数据双向绑定原理实现和应用场景

    Android数据双向绑定原理实现和应用场景

    本文介绍了Android数据双向绑定的原理和实现方式,包括基于观察者模式和数据绑定框架的实现方法,以及应用场景和优缺点的分析,帮助开发者了解和应用数据双向绑定技术,提升应用的交互性和响应速度
    2023-04-04
  • Android 实现高斯模糊效果且兼容低版本

    Android 实现高斯模糊效果且兼容低版本

    这篇文章主要介绍了Android 实现高斯模糊效果且兼容低版本的相关资料,本文图文并茂介绍的非常详细,需要的朋友可以参考下
    2016-09-09
  • Mac Android Studio安装图文教程

    Mac Android Studio安装图文教程

    本文主要介绍了Mac Android Studio安装教程,文中通过图文代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Android消息通知栏的实现方法介绍

    Android消息通知栏的实现方法介绍

    本篇文章是对Android消息通知栏的实现方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Android日志文件的读写工具类

    Android日志文件的读写工具类

    这篇文章主要为大家详细介绍了Android日志文件的读写工具类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Android 在viewPager中双指缩放图片双击缩放图片单指拖拽图片的实现思路

    Android 在viewPager中双指缩放图片双击缩放图片单指拖拽图片的实现思路

    本文通过实例代码给大家讲解了Android 在viewPager中双指缩放图片双击缩放图片单指拖拽图片的实现思路及解决方案,需要的朋友参考下吧
    2017-05-05
  • Java和Android的LRU缓存及实现原理

    Java和Android的LRU缓存及实现原理

    本文主要介绍 Java和Android的LRU缓存及实现原理,这里整理了详细的资料,有兴趣的小伙伴可以参考下便于学习理解
    2016-08-08
  • Kotlin协程launch原理详解

    Kotlin协程launch原理详解

    这篇文章主要为大家介绍了Kotlin协程launch原理的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • java从输入流中获取数据并返回字节数组示例

    java从输入流中获取数据并返回字节数组示例

    这篇文章主要介绍了java从输入流中获取数据并以字节数组返回,这是一个常用的方法,以后可以直接拿来用。这种输入流可以来自Android本地,也可以来自网络
    2014-01-01

最新评论