0

在启动活动中,我将数据插入到 AsyncTask 中的数据库中,当它完成时,我启动新活动并选择该数据以在列表视图中显示它,但所选光标为空。这是插入和启动新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!

所以数据插入得很好(我可以在查看器中看到它)。但是在下一个活动中我无法检索它。为什么?在开始新的活动之前,我打电话get()等待AsyncTask完成。

PS select 和 * 之间的插入空间无效。

4

2 回答 2

1
DatabaseManager db = DatabaseManager.getInstance(this);
 db.open();
  String selectionQuery = "select * from messages;";
 database.rawQuery(selectionQuery, null).getCount(); //Here is 0!
于 2013-03-19T11:42:07.210 回答
0

参考我引用的方法的android文档:rawQuery

...SQL 字符串不能是 ; 终止

所以,我建议你从你的 sql 字符串中删除分号。

于 2013-03-20T09:08:04.923 回答