我想用SQLiteOpenHelper创建一个数据库,但我面临的一些问题
问题描述:
我创建SQLiteOpenHelper Class.Its的子类(DatabaseHelper)有一个构造函数和两个重写的方法我想用SQLiteOpenHelper创建一个数据库,但我面临的一些问题
public DatabaseHelper(Context context) {
super(context, dbName, null,33);
// TODO Auto-generated constructor stub
}
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE "+ quizTable +"("+quizCol1+" INTEGER PRIMARY KEY,"+
quizCol2+" TEXT,"+ quizCol3 +" TEXT,"+ quizCol4 +" INTEGER," + quizCol5 + " DATETIME)");
db.execSQL("CREATE TABLE "+ questionTable +"("+questionCol1+" INTEGER PRIMARY KEY,"+
questionCol2+" INTEGER,"+ questionCol3 +" TEXT,"+ questionCol4 +" TEXT," + questionCol5 + " TEXT," +
questionCol6 + " TEXT," + questionCol7 +" TEXT," + questionCol8 +" TEXT)");
db.execSQL("CREATE TABLE "+ playedQuizzes +"("+playedQuizCol1+" INTEGER PRIMARY KEY,"+
playedQuizCol2+" TEXT,"+ playedQuizCol3 +" TEXT,"+ playedQuizCol4 +" TEXT," +
playedQuizCol5 + " TEXT)");
System.out.println("this is onCreate method");
InsertQuiz();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS "+questionTable);
db.execSQL("DROP TABLE IF EXISTS "+playedQuizzes);
onCreate(db);
}
在我的活动我的子类有人称上述类的使用
public void onStart(){
try{
super.onStart();
dbHelper = new DatabaseHelper(this);
}catch(Exception ex){
CatchError(ex.toString());
}
}
构造但是当我运行我的Activity类,打开我的DDMS角度来看的话,我没有找到下/数据/数据创建的任何数据库/
我的知识或我的代码有问题吗?如果是,请告诉我。
答
从SQLiteOpenHelper类的文档:
创建一个辅助对象创建,打开,和/或管理数据库。这种方法总是很快返回。数据库实际上不是 创建或打开,直到getWritableDatabase()或 getReadableDatabase()被调用。
因此,在不调用getWritableDatabase()或getReadableDatabase()之前,数据库不会被创建。
答
在你的代码没有打开数据库....
创建,写入或打开数据库getWritableDatabase()
或创建&打开数据库getReadableDatabase()
是练琴.....
请按照以下链接清除有关android数据库的概念http://hackaday.com/2010/07/21/android-development-101-part-3introduction-to-databases/ – himanshu 2012-01-17 12:18:28