欢迎投稿

今日深度:

SQLite使用模糊查询,sqlite模糊查询

SQLite使用模糊查询,sqlite模糊查询


    SQLite查询大体可以分两种,一是拼完整语句,二是用封装好的方法用数组传参。     不说废话,先上一段可以用的示例代码(数组传参):
        String[] selectioinArgs = {"%"+keyword+"%"};//注意:这里没有单引号
        String sql = "select "+ TABLE_COLUMN_NAME +"," +TABLE_COLUMN_SYSTEM_NAME+ " from " + TABLE_NAME
                + " where " + TABLE_COLUMN_NAME + " like ? ";
        Cursor cursor = db.rawQuery(sql,selectioinArgs);
    或者(直接拼完整sql)
        String sql2 = "select "+ TABLE_COLUMN_NAME +"," +TABLE_COLUMN_SYSTEM_NAME+ " from " + TABLE_NAME
                + " where " + TABLE_COLUMN_NAME + " like '%"+keyword+"%'";//注意:这里有单引号
        Cursor cursor2 = db.rawQuery(sql2,null);


    第二种因为是直接完整的SQL语句,没太多问题,第一种这里的可能发生的错误有几个:
    1. String[]  selectionArgs = {"'%"+keyword+"%'"}     这个数组比上面的正确的多了一堆单引号"'",导致的结果是单引号被加入匹配串,实际匹配串成了" like ''%keyword%''",意思为必须包含两边是单引号和中间任意关键字。问题出在多了一对单引号。     2.sql语句后半段:" where " + TABLE_COLUMN_NAME + " like '?' "     这种情况下会报一个异常,大致意思是说“你没说需要参数,可是你又硬给我一个参数,劳资不干了!”。问题就出在问号不应该用单引号包裹。
    原因:     我们使用SQLite查询的时候用的"where xxx = ?"来指定条件,我们知道如果"?部分"是String 类型时,是需要单引号引起来的。
        经过几个错误的语句可以判断出,"?" 的前后位置必须是空格或者逗号,否则会把?和连着的字符整体当做一个String对象,而不是后补参数空位 。

www.htsjk.Com true http://www.htsjk.com/SQLite/25909.html NewsArticle SQLite使用模糊查询,sqlite模糊查询     SQLite查询大体可以分两种,一是拼完整语句,二是用封装好的方法用数组传参。     不说废话,先上一段可以用的示例代码(数组传参): Str...
相关文章
    暂无相关文章
评论暂时关闭