JavaEclipse似乎不想编译我的类的新版本。即使在(我认为)修复它之后,我也会遇到同样的错误
我正在为Android应用程序制作一个SQLite数据库。我正在扩展SQLiteOpenHelper
问题围绕这条线
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS " + highscores + " (_id INT AUTOINCREMENT, level INT, moves INT);");
}
返回的错误的顶部(实际上有一个特别巨大的错误列表,但我假设它们是由这个错误引起的)是
Failure 1 (AUTOINCREMENT is only allowed on an INTEGER PRIMARY KEY) on 0x1c0b98 when preparing 'CREATE TABLE IF NOT EXISTS Highscores (_id INT PRIMARY KEY AUTOINCREMENT, level INT, moves INT);'.
很容易修复,所以我想,但是没有。我把电话换成了
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS " + highscores + " (_id INT PRIMARY KEY AUTOINCREMENT, level INT, moves INT);");
}
这肯定行得通。但我得到了完全相同的错误。对此感到困惑的a尝试了更多地使用该语句,但总是得到完全相同的错误。我可以从我的代码中删除整行代码,我得到同样的错误
显然,我寻找了重复的类,认为我可能正在编辑一个副本,但看不到任何副本
对这个奇怪问题的任何帮助都将不胜感激
# 1 楼答案
请使用其他表名
# 2 楼答案
听起来可能很傻,但您是否尝试删除设备并重新创建/启动,以便再次调用onCreate
# 3 楼答案
尝试在create语句中用
INTEGER
替换INT
更多信息请参见http://www.sqlite.org/datatype3.html
# 4 楼答案
我看到您在第二次尝试中添加了主键,但是您在第二次尝试中也添加了整数吗?这行代码适用于我的应用程序:
编辑:
刚刚使用adb在命令行上使用sqlite3测试了此功能,它似乎可以工作: