1

基本的に次のことを行うメソッドがあります。

Cursor cursor;                                  
cursor = myCard.queryRandomCard(this);              
cursor.moveToFirst();

queryRandomCard メソッド内:

DataSource datasource = new DataSource(context);
datasource.open();
Cursor cursor  = (SQL STATEMENT IS HERE AND WORKS); 
datasource.close();
return cursor;

問題は、「cursor.moveToFirst()」の実行中に「接続プールが閉じられました」というエラーが返されることです。ただし、「datasource.close()」呼び出しを削除すると、正常に動作します。

私の質問は、ここでデータベースを閉じると返されるカーソルに影響するのはなぜですか? この2つは、私が思っていたよりも密接に結びついていますか?

ありがとうございました

4

1 に答える 1

2

Cursorは、Database のテーブルを操作する反復子にすぎません。Cursor を使用すると、一度にテーブル全体をロードするのではなく、必要なたびに 1 つの行をロードするため、データベースへのオープン接続が機能するために必要です。

于 2013-09-16T01:44:43.813 に答える