【发布时间】:2014-07-08 10:17:00
【问题描述】:
在上一篇文章中,有一种方法可以创建我的 SQLiteDatabse 的单个实例,然后在整个应用程序中简单地引用它。我不知道如何告诉它我的数据库在哪里。由于我的数据库是写入 SDCard 的,所以必须有一种方法来告诉它应该使用哪个数据库,对吗?下面是代码:
public class DatabaseManager {
private int mOpenCounter;
private static DatabaseManager instance;
private static SQLiteOpenHelper mDatabaseHelper;
private SQLiteDatabase mDatabase;
public static synchronized void initializeInstance(SQLiteOpenHelper helper) {
if (instance == null) {
instance = new DatabaseManager();
mDatabaseHelper = helper;
}
}
public static synchronized DatabaseManager getInstance() {
if (instance == null) {
throw new IllegalStateException(DatabaseManager.class.getSimpleName() +
" is not initialized, call initializeInstance(..) method first.");
}
return instance;
}
public synchronized SQLiteDatabase openDatabase() {
mOpenCounter++;
if(mOpenCounter == 1) {
// Opening new database
mDatabase = mDatabaseHelper.getWritableDatabase();
}
return mDatabase;
}
public synchronized void closeDatabase() {
mOpenCounter--;
if(mOpenCounter == 0) {
// Closing database
mDatabase.close();
}
}
}
我的实际数据库名为 FooBase.db
static File directoryPath = new File(Environment.getExternalStorageDirectory().toString() + "/MyApp/database");
【问题讨论】:
标签: android android-sqlite instance