Android SQLite Like查询

Mar*_*arr 1 sqlite search sql-like

以下查询在我的应用程序中正常运行

db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,KEY_FAULTREF,KEY_WORKNUM,KEY_ORIGNUM,KEY_REPBY,KEY_REPDATTIM,KEY_DESCRIPTION}, KEY_FAULTREF + "='" + strname+ "'", null,null, null, null, null);
Run Code Online (Sandbox Code Playgroud)

strname是我要搜索的内容,但只会带回与之完全匹配的记录

我想进行修改,以使它包含CONTAINS strname的所有内容(例如,类似strname的东西)

我尝试了以下操作,但我的应用程序崩溃了

db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,KEY_FAULTREF,KEY_WORKNUM,KEY_ORIGNUM,KEY_REPBY,KEY_REPDATTIM,KEY_DESCRIPTION}, KEY_REPBY + "LIKE %'" + strname+ "'%", null,null, null, null, null);
Run Code Online (Sandbox Code Playgroud)

我知道它是LIKE声明,但我想在哪里出错呢?

感谢您的帮助

标记

CL.*_*CL. 5

%通配符必须是字符串的一部分:

... + " LIKE '%" + strname+ "%'", ...
Run Code Online (Sandbox Code Playgroud)

请注意,当字符串包含引号时,此代码将被炸掉。您应该改用参数:

db.query(true, DATABASE_TABLE,
         new String[] {KEY_ROWID,KEY_FAULTREF,KEY_WORKNUM,KEY_ORIGNUM,KEY_REPBY,KEY_REPDATTIM,KEY_DESCRIPTION},
         KEY_REPBY + " LIKE ?",
         new String[] { "%" + strname + "%" },
         null, null, null, null);
Run Code Online (Sandbox Code Playgroud)