【问题标题】:SQLite Error 1 No Column SQLite Insert ErrorSQLite 错误 1 ​​无列 SQLite 插入错误
【发布时间】:2012-01-13 17:35:53
【问题描述】:

我正在尝试在我的应用程序中创建一个 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");
        }

    }

【问题讨论】:

标签: android sql sqlite


【解决方案1】:

添加新列的正确语法:

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");
    }

}

【讨论】:

  • 试过了,不行。查看我评论中的链接,了解我正在处理的开源数据。谢谢
  • 这是正确的答案,因为这是您正确添加列的方式。我的问题源于不正确地添加了为列创建数据的微调器。
【解决方案2】:

试试

ALTER TABLE inventory ADD COLUMN location TEXT

【讨论】:

    【解决方案3】:

    尝试将第一个 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 列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多