0

開始アクティビティで、AsyncTaskのデータベースにデータを挿入し、完了したら、新しいアクティビティを開始し、そのデータを選択してリストビューに表示しますが、選択したカーソルは空です。新しいアクティビティを挿入して開始するコードは次のとおりです。

 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

PSselectと*の間の挿入スペースは何もしません。

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 に答える