有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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尝试了更多地使用该语句,但总是得到完全相同的错误。我可以从我的代码中删除整行代码,我得到同样的错误

显然,我寻找了重复的类,认为我可能正在编辑一个副本,但看不到任何副本

对这个奇怪问题的任何帮助都将不胜感激


共 (4) 个答案

  1. # 1 楼答案

    请使用其他表名

  2. # 2 楼答案

    听起来可能很傻,但您是否尝试删除设备并重新创建/启动,以便再次调用onCreate

  3. # 4 楼答案

    我看到您在第二次尝试中添加了主键,但是您在第二次尝试中也添加了整数吗?这行代码适用于我的应用程序:

    CREATE TABLE Person (_Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT, Budget CURRENCY, Active INTEGER);
    

    编辑:

    刚刚使用adb在命令行上使用sqlite3测试了此功能,它似乎可以工作:

    > sqlite3 test.db
    SQLite version 3.7.2
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    > CREATE TABLE IF NOT EXISTS Highscores (_id INT PRIMARY KEY AUTOINCREMENT, level INT, moves INT);                        
    Error: AUTOINCREMENT is only allowed on an INTEGER PRIMARY KEY
    > CREATE TABLE IF NOT EXISTS Highscores (_id INTEGER PRIMARY KEY AUTOINCREMENT, level INT, moves INT);                  
    >