2017-01-09 10 views
0

私はAndroidプログラミングを初めて勉強していて、sqliteデータベースを使いこなし始めています。私のアプリケーションでは、私はonpauseとondestroyでデータベースを閉じています。一時停止後にデータベースを開く

しかし、このアプリケーションを使用しているときに、データベース/アプリケーションをしばらく閉じてからもう一度開こうとしていますが、「閉じられたデータベースを開くことができません」というエラーが発生しましたか?

助けてください。ここでは、javaファイルの抜粋です。

public class Apple extends Activity { 

DbA myDb; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.apple_layout); 
    openDB(); 
    } 

    private void openDB() { 
myDb= new DbA(this); 
myDb.open(); 
} 

    @Override 
    protected void onDestroy() { 
super.onDestroy(); 
myDb.close(); 
    } 


    @Override 
    protected void onResume() { 
super.onResume(); 
myDb.open(); 
} 

    @Override 
protected void onPause() { 
super.onPause();   
myDb.close(); 
    } 

私が間違っていることを教えてください。

+0

郵便番号を持つことができます。 – Okas

+0

再開時または一時停止中にデータベースを開く必要はありません。データベースを使用する前と後でのみ開いて閉じます。 –

答えて

0

私の意見では、オープンなデータベース接続をアクティビティのライフサイクル全体にわたって維持する必要はありません。

私は通常、アクションを実行して終了すると書き込み可能なデータベースを取得します。

たとえば、レコードを追加するために、あなたはあまりにもしてください使用している「DBA」クラスの次のメソッド

public void addItem(Item item) { 
    if (item == null) { 
     return; 
    } 

    // get writable database and begin transaction 
    final SQLiteDatabase database = dbHelper.getWritableDatabase(); 
    database.beginTransaction(); 

    // INSERT ITEM IN DATABASE 

    // End transaction and close connection 
    database.setTransactionSuccessful(); 
    database.endTransaction(); 
    database.close(); 
} 
関連する問題