[英]App crashing when trying to add a second table
Ok so I'm really confused at the moment. 好吧,我现在真的很困惑。 I'm trying to add a new table to my program, but whenever I do I crashes on my, specifically at the onCreate method. 我正在尝试向程序中添加新表,但是每当执行此操作时,我都会崩溃,尤其是onCreate方法。 I cannot for the love of me figure out why. 我无法为我的爱找出原因。 Any suggestions? 有什么建议么?
Also this is an error I get, but I can't find categories.db anywhere 这也是我得到的错误,但是我在任何地方都找不到category.db
Caused by: android.database.sqlite.SQLiteException: no such table: categories.db (code 1): , while compiling: SELECT * FROM categories.db 引起原因:android.database.sqlite.SQLiteException:否这样的表:category.db(代码1):,而编译时:SELECT * FROM Categories.db
private final static int DB_VERSION = 2;
public static String TABLE_NAME = "players";
public static String DB_NAME = "playerslist.db";
public static String SCORE = "score";
public static String ID = "_id";
public static String PLAYER_NAME = "name";
public static String CATEGORY_TABLE_NAME = "categories";
public static String CATEGORY_NAME = "category_name";
public static String CATEGORY_VALUE = "category_value";
public static String CATEGORY_ID = "category_id";
public static String CATEGORY_PLAYER_ID = "category_player_id";
public static String CREATE_PLAYER_TABLE = "CREATE TABLE "+TABLE_NAME+" ("+ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+PLAYER_NAME+" TEXT, "+
SCORE+" TEXT)";
public static String CREATE_CATEGORY_TABLE = "CREATE TABLE "+CATEGORY_TABLE_NAME+"("+CATEGORY_ID+" INTEGER" +
"PRIMARY KEY AUTOINCREMENT, "+CATEGORY_NAME+" TEXT, "+CATEGORY_VALUE+" INTEGER, "
+CATEGORY_PLAYER_ID+" INTEGER)";
public SQLHelp(Context context) {
super(context, DB_NAME, null, 2);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_PLAYER_TABLE);
db.execSQL(CREATE_CATEGORY_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
for(int i = oldVersion; i < newVersion; i++){
switch(i){
case 1:
db.execSQL(CREATE_CATEGORY_TABLE);
break;
}
}
}
更改您的CREATE TABLE字符串以将IF NOT EXISTS
包括在内,
CREATE TABLE IF NOT EXISTS Table_name(Columns)
Delete your application from the device or emulator, and INSTALL/RUN again, and it should work. 从设备或仿真器中删除您的应用程序,然后再次安装/运行,它应该可以工作。
I had the same problem, and I simple delete the application from device and it worked. 我遇到了同样的问题,然后我简单地从设备中删除了该应用程序,它开始工作了。
Try this.. 尝试这个..
While creating the second table, you had "INTEGER" + "PRIMARY KEY AUTOINCREMENT".. 创建第二个表时,您具有“ INTEGER” +“ PRIMARY KEY AUTOINCREMENT”。
I made that in one. 我做到了这一点。
public static String CREATE_CATEGORY_TABLE = "CREATE TABLE "+CATEGORY_TABLE_NAME+"("+CATEGORY_ID+ " INTEGER PRIMARY KEY AUTOINCREMENT, "+CATEGORY_NAME+" TEXT, "+CATEGORY_VALUE+" INTEGER, "
+CATEGORY_PLAYER_ID+" INTEGER)";
You should call SQLiteOpenHelper 您应该致电SQLiteOpenHelper
private static class DatabaseHelper extends SQLiteOpenHelper{
DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db){
db.execSQL(CREATE_PLAYER_TABLE);
db.execSQL(CREATE_CATEGORY_TABLE);
}
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2{
db.execSQL("DROP TABLE IF EXISTS " + CREATE_PLAYER_TABLE);
db.execSQL("DROP TABLE IF EXISTS " + CREATE_CATEGORY_TABLE);
onCreate(db);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.