SQLite错误1没有列SQLite插入错误

时间:2012-01-13 17:35:53

标签: android sql sqlite

我正在尝试在我的应用程序中创建一个SQLite数据库,将其导出到SD卡。我收到了错误

  

01-13 12:31:39.621:I / Database(3828):sqlite返回:错误代码= 1,msg =表库存没有名为location的列

     

SQLite插入错误

这是我创建数据库的代码......我似乎无法找到问题所在。

@Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE inventory ("
                + "_id   INTEGER PRIMARY KEY," + "serialnum TEXT,"
                + "modelnum TEXT," + "manufact TEXT," + "description TEXT,"
                + "time DATETIME" + ");");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (oldVersion < 2) {
            Log.d("SW","Upgrading database from version " + oldVersion + " to " + newVersion);
            db.execSQL("ALTER TABLE inventory ADD location TEXT");
        }
        if (oldVersion < 3) {
            Log.d("SW","Upgrading database from version " + oldVersion + " to " + newVersion);
            db.execSQL("ALTER TABLE inventory ADD other TEXT");
        }

    }

3 个答案:

答案 0 :(得分:0)

尝试

ALTER TABLE inventory ADD COLUMN location TEXT

答案 1 :(得分:0)

尝试将第一个SQL命令更改为:

    db.execSQL("CREATE TABLE inventory ("
            + "_id   INTEGER PRIMARY KEY," + "serialnum TEXT,"
            + "modelnum TEXT," + "manufact TEXT," + "description TEXT,"
            + "time DATETIME," + "location TEXT" + ");");

- 您的create table语句未包含location列。

答案 2 :(得分:0)

更正新列的正确语法:

ALTER TABLE test1 ADD COLUMN foo;

试试这个:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion < 2) {
        Log.d("SW","Upgrading database from version " + oldVersion + " to " + newVersion);
        db.execSQL("ALTER TABLE inventory ADD COLUMN location TEXT");
    }
    if (oldVersion < 3) {
        Log.d("SW","Upgrading database from version " + oldVersion + " to " + newVersion);
        db.execSQL("ALTER TABLE inventory ADD COLUMN other TEXT");
    }

}