我想在使用sqlite
的Android手机上创建本地数据库。SQLiteOpenHelper无法调用onCreate?
我有一个帮助类,如下所示,用于创建数据库并提供“帮助”。
我想在我的代码的主要部分创建这个类的对象,它也创建数据库和表。
问题:
每当我创建一个类的对象,它似乎并没有被要求在助手的onCreate
方法。我认为这是应该发生的。我认为onCreate
基本上是该类的构造函数。 (我相信我错了)
- 那么,为什么它不调用
onCreate
方法? - 或者我如何获得它来创建数据库和表格,我在哪里创建类的对象?
- 如果这不是一个好方法,那么更好的方法是做什么?
public class SmartDBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "smart_lite_db.db";
private static final int DATABASE_VERSION = 2;
private static final String NOTIFY_TABLE_NAME = "user_notify_data";
private static final String HR_TABLE_NAME = "user_hr_data";
private static final String NOTIFY_TABLE_CREATE =
"CREATE TABLE " + NOTIFY_TABLE_NAME +
" (counter INTEGER PRIMARY KEY, " +
"userresponse INTEGER, " +
"notifytime INTEGER);";
private static final String DATA_TABLE_CREATE =
"CREATE TABLE " + HR_TABLE_NAME +
" (counter INTEGER PRIMARY KEY, " +
"hr INTEGER, " +
"act INTEGER, " +
"timestamp INTEGER);";
public SmartDBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
Log.v("smartdbhelper", "before creation");
db.execSQL(NOTIFY_TABLE_CREATE);
Log.v("smartdbhelper", "middle creation");
db.execSQL(DATA_TABLE_CREATE);
Log.v("smartdbhelper", "after creation");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
public class SmartApp extends Activity implements OnSharedPreferenceChangeListener {
private SmartDBHelper dBHelper;
public void onCreate(Bundle savedInstanceState) {
//where i am wanting to create the database and tables
dBHelper = new SmartDBHelper(getContext());
}
}
测试现在,我相信你是对的。我刚刚检查了Android的例子,发现。我一定是一直在看它,会让你知道它是怎么回事。谢谢 – prolink007 2011-02-17 01:44:55
+1:这工作。谢谢 – prolink007 2011-02-17 02:24:19