Android 每次使用sqlite数据库后打开和关闭该数据库

Android 每次使用sqlite数据库后打开和关闭该数据库,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,对于每个数据库事务操作,打开和关闭数据库是否是一种好的做法?让我更清楚地告诉你 我有两种方法,比如 public SQLiteDatabase getDatabase() { if (database == null || !database.isOpen()) { database = getWritableDatabase(); } return database; } public void closeDatabase() { if (da

对于每个数据库事务操作,打开和关闭数据库是否是一种好的做法?让我更清楚地告诉你

我有两种方法,比如

public SQLiteDatabase getDatabase() {
    if (database == null || !database.isOpen()) {
        database = getWritableDatabase();
    }
    return database;
}

public void closeDatabase() {
    if (database != null && database.isOpen()) {
        database.close();
    }
}
因此,每次更新/插入或删除时,我都会打开并关闭数据库

 public void insert(...) {
      getDatabase().insert(...);
      closeDatabase();
 }

 public void update(...) {
      getDatabase().update(...);
      closeDatabase();
 }

 public void delete(...) {
      getDatabase().delete(...);
      closeDatabase();
 }
请记住,所有这些方法都在一个类
DatabaseHelper
中,该类正在扩展
SQLiteOpenHelper
,并且有一个全局变量
专用SQLiteDatabase数据库

我将更频繁地执行这些操作(插入/更新/删除)


所以我的问题是
为每个事务打开和关闭数据库是否是一种好的做法?如果没有,好办法是什么?何时何地必须关闭数据库?

每次打开和关闭数据库都可能(非故意)遇到问题,例如试图打开已关闭的数据库时遇到问题

因此,我建议创建数据库对象时使用单例,以便每次调用
database=getwriteabledatabase()指的是同一个对象

考虑在onDestroy()方法中关闭此项,以便在应用程序关闭时也关闭数据库

private static AllItemsDB db; //AllItemsDB is my database class
public static AllItemsDB getDb() {

    if (db == null) {
        Log.d("","Issue here");
        db = new AllItemsDB(app);
        Log.d("","Issue here not");
    }

    return db;
}
由于这是一个静态方法,我可以使用AllItemsDB.myCRUD_方法,它每次都会返回相同的oblect,并且易于访问。:)


可能的重复:我总是让数据库只在严格必要的时间内打开,以便从数据库中使用数据或将数据修改到数据库中。然后立即关闭它。这是另一个问题;-)