0

我构造选择字符串以跨多个列执行 FTS3 搜索:

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

我还传递了包含搜索词的 selectionArgs 。问题是我在参数绑定期间遇到异常:

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

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

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

4

1 回答 1

0

以下方法对我有用:

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

在代码中:

final String selection = "table MATCH ?"
final String[] selectionArgs = { String.format("column1:%s* OR column2:%s*", term1, term2) };
于 2013-12-01T23:25:43.523 回答