使用sqlite进行Android搜索错误

时间:2014-04-19 08:01:21

标签: android android-sqlite

我试图使用MATCH关键字从我的数据库查询结果中获取游标,如下所示

databaseHelper = new DatabaseHelper(this);
    database= databaseHelper.getReadableDatabase();
    data = database.query(DatabaseHelper.DATABASE_TABLE, Constants.FROM_MAINSCREEN, databaseHelper.COLUMN_TITLE + " MATCH ?", new String[]{"f*"}, null, null, null);
    if(data!=null)
        data.moveToFirst();
    dataAdapter = new MyCursorAdapterMainScreen(this, data, 0);
    listView.setAdapter(dataAdapter);

我收到错误如下

android.database.sqlite.SQLiteException: SQL logic error or missing database

2 个答案:

答案 0 :(得分:1)

  

android.database.sqlite.SQLiteException:SQL逻辑错误或丢失   数据库

您的问题是您的查询,而且MATCH确实是 1 。所以改成它:

"... LIKE ?", new String[] {"f%"}

现在应该可以了。

1 仅在FTS3和FTS4表中引入匹配,因此您的表必须是虚拟的,而不是普通的,因为您最有可能。

答案 1 :(得分:0)

默认情况下,MATCH is not implemented

  

MATCH运算符是match()应用程序定义函数的特殊语法。默认的match()函数实现会引发异常,对任何事情都没有用。但扩展可以使用更有用的逻辑覆盖match()函数。

您似乎可以使用GLOB代替MATCH