在Android的"简单"数据库场景中,使用database.close()和NotdatabaseHelper.close()有什么好处或理由吗?使用databaseHelper.close()和Notdatabase.close()有什么好处或理由吗?
这两种封闭方法(如下所示)存在的技术原因是什么?
谢谢,James
MyDatabaseHelper databaseHelper = new MyDatabaseHelper(this);
SQLiteDatabase database = databaseHelper.getWritableDatabase();
ContentValues valuesToInsert = new ContentValues();
int id = 0;
valuesToInsert.put("_id", id);
valuesToInsert.put("name", "test");
database.insert("MyRecordsTable", null, valuesToInsert);
database.close();
或
MyDatabaseHelper databaseHelper = new MyDatabaseHelper(this);
SQLiteDatabase database = databaseHelper.getWritableDatabase();
ContentValues valuesToInsert = new ContentValues();
int id = 0;
valuesToInsert.put("_id", id);
valuesToInsert.put("name", "test");
database.insert("MyRecordsTable", null, valuesToInsert);
databaseHelper.close();
没有太大的区别。这是SQLiteOpenHelper
:中close()
的全部定义
/**
* Close any open database object.
*/
public synchronized void close() {
if (mIsInitializing) throw new IllegalStateException("Closed during initialization");
if (mDatabase != null && mDatabase.isOpen()) {
mDatabase.close();
mDatabase = null;
}
}
两者都存在的原因是,在某些情况下,开发人员可能只使用SQLiteOpenHelper
与数据库接口,并希望close()
方法作为直接访问数据库的便利,如果开发人员根本不选择使用OpenHelper,则反之亦然。