我构造选择字符串以在多列之间执行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) };