在启动 Activity 中,我将数据插入 AsyncTask 中的数据库中,完成后我启动新 Activity 并选择该数据以在 ListView 中显示它,但所选光标为空。 这是插入和启动新 Activity 的代码:
dbOperations= DatabaseManager.getInstance(AuthorizationMainActivity.this);
dbOperations.open();
LinkedHashMap<String, Object> parametersInbox = new LinkedHashMap<String, Object>();
parametersInbox.put("_id", result.get("msg_id"));
parametersInbox.put("limit", Integer.valueOf(1000).toString());
parametersInbox.put("type", Integer.valueOf(1).toString());
requestInbox(serverParametersInbox);//This method send request to the server and insert response into the database.
try {
databaseTask.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
Intent nextView = new Intent(context_, InboxActivity.class);
startActivity(nextView);
这是InboxActivity
onCreate()
:
DatabaseManager db = DatabaseManager.getInstance(this);
db.open();
String selectionQuery = "select * from messages;";
database.rawQuery(selectionQuery, null).getCount(); //Here is 0!
所以数据插入得很好(我可以在查看器中看到它)。但在下一个 Activity 中我无法检索它。为什么?在开始新的 Activity 之前,我调用 get()
来等待 AsyncTask
完成。
P.S select 和 * 之间插入空格不会产生任何效果。
最佳答案
DatabaseManager db = DatabaseManager.getInstance(this);
db.open();
String selectionQuery = "select * from messages;";
database.rawQuery(selectionQuery, null).getCount(); //Here is 0!
关于java - 异步插入后无法从android sqlite数据库检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15498443/