暂停后重新打开数据库

时间:2017-01-09 09:15:30

标签: android database onresume

我是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();   
  }

请告诉我我做错了什么。

1 个答案:

答案 0 :(得分:0)

在我看来,没有必要在活动的整个生命周期中保持开放的数据库连接。

当我要执行某个操作时,我通常会使用可写数据库,并在完成时关闭。

例如,要添加记录,您可以使用以下方法

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();
}