gpt4 book ai didi

android - SQLiteDatabase Cursor 仅在 Android 5.0+ 设备上为空

转载 作者:行者123 更新时间:2023-11-29 20:43:36 24 4
gpt4 key购买 nike

该应用程序有一个 SearchView,它从特定的数据库表中获取建议。在 Android 5.0 出现之前,一切都没有任何错误。

至此,当SQLiteQueryBuilder查询数据库填充Cursor对象时,返回的是空游标。不是 NULL,而是空的。

在其他平台上,我可以通过 DatabaseUtils.dumpCursorToString(cursorObject) 输出 Cursor 的内容,但在 Android 5.0+ 上,该方法报告空对象的输出

Dumping cursor null
<<<<<

甚至更多:当我从 5.0+ 设备中提取数据库文件并运行本地 SQL 查询时,我可以获取所有数据。所以数据库确实有效。而查询是最简单的

SELECT rowid AS _id, suggest_text_1, suggest_text_2, rowid AS suggest_intent_data_id 
FROM fts
WHERE (fts MATCH '*e*') //<-- I pressed "e" on the keyboard

从数据库中选择数据并填充Cursor对象的逻辑非常简单

    SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables(FTS3_TABLE);
builder.setProjectionMap(mColumnMap);

Cursor cursor = builder.query(db,columns, selection, selectionArgs,
null, null, null);

我尝试寻找一些已弃用的方法,但没有任何运气。

我已经花了 3 天时间调试流程中的每个步骤,但我不知道是什么导致了这种行为。

有人有什么想法吗?

编辑

buildQuery() 方法的输出

String query = builder.buildQuery(columns, selection, null, null, null, null);

RESULT:
SELECT rowid AS _id, suggest_text_1, suggest_text_2, rowid AS suggest_intent_data_id
FROM fts
WHERE (fts MATCH ?)

selectionselectionArgs 参数是这样创建的

String selection = FTS3_TABLE + " MATCH ?";
String[] selectionArgs = new String[]{"*" + query + "*"};

RAW 查询结果与通过 builder.query()

查询的结果相同
String query = builder.buildQuery(columns, selection, null, null, null, null);
Cursor temp = db.rawQuery(query, selectionArgs);
String output = DatabaseUtils.dumpCursorToString(temp);

Output: >>>>> Dumping cursor android.database.sqlite.SQLiteCursor@295023a7
<<<<<

最佳答案

已回答 https://stackoverflow.com/a/30710226/437039通过 laalto

MATCH '*foo*' queries never worked correctly in any version of sqlite. The fact that you got some results earlier was just a coincidence. Just the prefix form MATCH 'foo*' (and MATCH 'foo') are supported.

Lollipop ships with a newer version of sqlite. For detailed list of changes between sqlite versions, see the changelog.

关于android - SQLiteDatabase Cursor 仅在 Android 5.0+ 设备上为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30668938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com