我正在使用以下查询在sqlite中执行搜索.
public MatrixCursor ListVIEwCursor(String query) { open(); Cursor dcursor = null; MatrixCursor cursor = new MatrixCursor(ListvIEwColumns); Object[] ListvIEwarray = null; String[] selectionArgs = new String[] { query }; System.out.println("Selectionarg = "+selectionArgs.toString()); if (query == null) { try {// this works dcursor = database.query(LA_DATABASE_table, ListvIEwColumns, null, null, null, null, LA_TEST_name); } catch (Exception e) { e.printstacktrace(); } } else try {// this don't work!!! dcursor = database.query(LA_DATABASE_table, ListvIEwColumns, LA_TEST_name + " MATCH ?", new String[] { query }, null, null, null); } catch (Exception e) { e.printstacktrace(); } System.out.println("dcursor count = "+dcursor.getCount()); ListvIEwarray = new Object[dcursor.getColumnCount()]; if (dcursor.movetoFirst()) { do { for (int i = 0; i < dcursor.getColumnCount(); i++) { ListvIEwarray[i] = dcursor.getString(i); } cursor.addRow(ListvIEwarray); System.out.println(dcursor.getString(1)); } while (dcursor.movetoNext()); } else return null; close(); return cursor;}
但是我收到以下错误.
0
1-01 04:36:27.376: I/sqliteDatabaseCpp(3171): sqlite returned: error code = 1, msg = statement aborts at 7: [SELECT _ID, suggest_text_1, test_value_1, test_value_2, test_type_1 FROM la_table WHERE suggest_text_1 MATCH ?] unable to use function MATCH in the requested context, db=/data/data/com.assistant.lab.royale/databases/la_db01-01 04:36:27.376: E/sqlitequery(3171): exception: sql logic error or missing database; query: SELECT _ID, suggest_text_1, test_value_1, test_value_2, test_type_1 FROM la_table WHERE suggest_text_1 MATCH ?01-01 04:36:27.376: D/AndroIDRuntime(3171): Shutting down VM01-01 04:36:27.376: W/dalvikvm(3171): threadID=1: thread exiting with uncaught exception (group=0x409c01f8)01-01 04:36:27.465: E/AndroIDRuntime(3171): FATAL EXCEPTION: main01-01 04:36:27.465: E/AndroIDRuntime(3171): androID.database.sqlite.sqliteException: sql logic error or missing database01-01 04:36:27.465: E/AndroIDRuntime(3171): at androID.database.sqlite.sqlitequery.nativeFillWindow(Native Method)01-01 04:36:27.465: E/AndroIDRuntime(3171): at androID.database.sqlite.sqlitequery.fillWindow(sqlitequery.java:86)01-01 04:36:27.465: E/AndroIDRuntime(3171): at androID.database.sqlite.sqliteCursor.fillWindow(sqliteCursor.java:164)01-01 04:36:27.465: E/AndroIDRuntime(3171): at androID.database.sqlite.sqliteCursor.getCount(sqliteCursor.java:156)01-01 04:36:27.465: E/AndroIDRuntime(3171): at com.assistant.lab.royale.DataSource.ListVIEwCursor(DataSource.java:52)01-01 04:36:27.465: E/AndroIDRuntime(3171): at com.assistant.lab.royale.LabAssistant.filterListVIEw(LabAssistant.java:32)01-01 04:36:27.465: E/AndroIDRuntime(3171): at com.assistant.lab.royale.LabAssistant.onqueryTextChange(LabAssistant.java:54)01-01 04:36:27.465: E/AndroIDRuntime(3171): at androID.Widget.SearchVIEw.onTextChanged(SearchVIEw.java:1091)01-01 04:36:27.465: E/AndroIDRuntime(3171): at androID.Widget.SearchVIEw.access00(SearchVIEw.java:90)01-01 04:36:27.465: E/AndroIDRuntime(3171): at androID.Widget.SearchVIEw.onTextChanged(SearchVIEw.java:1548)01-01 04:36:27.465: E/AndroIDRuntime(3171): at androID.Widget.TextVIEw.sendOnTextChanged(TextVIEw.java:7634)
为什么会这样呢?
编辑:
我使用dcursor = database.query修复它(LA_DATABASE_table,ListvIEwColumns,LA_TEST_name“liKE’%”查询“%’”,null,null,null,null);但我想知道为什么上面的代码不起作用.似乎 ?没有得到适当的替换.
解决方法:
请参阅此处http://sqlite.org/fts3.html的FTS3和FTS4简介
并确保您创建了这样的虚拟表
CREATE VIRTUAL table enrondata1 USING fts3(content TEXT);
这不是一般的
CREATE table enrondata2(content TEXT);
总结 以上是内存溢出为你收集整理的android – 使用MATCH的SQLite查询错误全部内容,希望文章能够帮你解决android – 使用MATCH的SQLite查询错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)