将selectionArgs绑定到跨多列的FTS3查询



我构造选择字符串以在多列之间执行FTS3搜索:

final String selection = "table MATCH 'column1:? OR column2:?'"

我还传递了selectionArgs,其中包含搜索词。问题是我在参数绑定过程中遇到了一个异常:

11-30 13:22:27.475 26281-26323/com.example.myappW/建议适配器﹕搜索建议查询引发异常。java.lang.IollegalArgumentException:无法在索引2处绑定参数,因为索引超出范围。该语句有0个参数。在android.database.sqlite.SQLiteProgram.bind(SQLiteProgram.java:212)在android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:166)

当我用硬编码的搜索词替换MATCH参数字符串中的问号并设置selectionArgs = null时,查询会起作用并返回正确的结果。

如何将selectionArgs绑定到跨多列搜索的FTS3查询?

以下方法对我有效:

  • 使用String.format()构造selectionArgs,使用搜索项作为参数
  • 使用单个参数构造selection

代码中:

final String selection = "table MATCH ?"
final String[] selectionArgs = { String.format("column1:%s* OR column2:%s*", term1, term2) };

最新更新