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