我是Android开发的新手,我正在制作一个简单的Android应用程序,它使用sqlite来保存一些数据。
我有一个SqliteOpenHelper来处理事物的数据库方面。我有一个启动数据库的onCreate方法
类构造函数
public CardDBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, CARD_DATABASE_NAME, factory, CARD_DATABASE_VERSION);
}
我在另一个类中实例化它
cardDBHandler = new CardDBHandler(this, null, null, 1);
onCreate方法
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE " + TABLE_CARDS + "(" +
CARD_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
DECK_ID + " INTEGER, FOREIGN KEY (" + DECK_ID +")
REFERENCES DATABASE_NAME(COLUMN_ID), " +
CARD_FRONT + " TEXT, " +
CARD_BACK + " TEXT " +
");";
db.execSQL(query);
Log.d(TAG, "Created card database");
}
我已修改此方法,但我的应用程序未注册更改,这导致一些例外。
我是否应该像添加活动一样将此类添加到清单中? 提前谢谢。
答案 0 :(得分:1)
如果在数据库生成后进行了更改,则必须更新数据库版本号并设置onUpgrade方法以删除并重新创建表。
您也可以从构造函数中删除一些参数,因为它们未被使用。
public CardDBHandler(Context context, SQLiteDatabase.CursorFactory factory) {
super(context, CARD_DATABASE_NAME, factory, CARD_DATABASE_VERSION);
}
然后
cardDBHandler = new CardDBHandler(this, null);
答案 1 :(得分:-3)
你删除这些行:
super.onCreate(stuff);
setContentView(R.layout.stuff);
你需要它,第一行调用onCreate父亲,第二行调用视图。
如果您想运行这些脚本,请使用您将在onCreate中调用的单独方法执行此操作
super.onCreate(stuff);
setContentView(R.layout.stuff);
doScript();
private void doScript(){
}