【发布时间】:2014-05-03 06:52:20
【问题描述】:
AbstractDbAdapter 内部有一个类,它扩展了SQLiteOpenHelper。当我调用它时,它会调用默认构造函数但不会进入onCreate() 函数。我手动成功创建了数据库,所以我确信所有 SQL 查询。为什么不调用 onCreate ?跟类里面的类有关系吗??
public abstract class AbstractDbAdapter {
public static DatabaseHelper mDbHelper = null;
public static SQLiteDatabase mDb = null;
private static int mReferenceCount = 0;
public static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context,DATABASE_TABLE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try{
mDb.execSQL(SCREATE_SOME_TABLE);
//"Database creation successful"
}
catch(Exception ex) {
//"Database creation failed"
}
// "Database creation successful"
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
mDb.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_NAME);
this.onCreate(mDb);
}
}
/**
*
*
* @return this
* @throws SQLException
* if the database could be neither opened or created
*/
public AbstractDbAdapter open() throws SQLException {
if( mReferenceCount == 0 ) {
if( mDbHelper == null )
mDbHelper = new DatabaseHelper(//getting main activity context);
if( mDb == null || mDb.isOpen() == false )
mDb = mDbHelper.getWritableDatabase();
}
mReferenceCount++;
return this;
}
【问题讨论】:
标签: android database sqlite database-connection