【问题标题】:No Such Column SQLite Android [closed]没有这样的列 SQLite Android [关闭]
【发布时间】:2020-10-19 05:49:59
【问题描述】:

有人知道为什么我会收到“没有”名为 COL2 的列的错误吗?

Error inserting COL2=sdfsdf
    android.database.sqlite.SQLiteException: table TWhereToGoList has no column named COL2 (code 1 SQLITE_ERROR): , while compiling: INSERT INTO TWhereToGoList(COL2) VALUES (?)

我的合同类在这里创建数据库变量:

public static final class YourEntry implements BaseColumns {
    public static final String TABLE_NAME = "TWhereToGoList";
    public static final String intWhereToGoListOID = BaseColumns._ID;
    public static final String COL2 = "COL2";

我想问你是否可以帮助我:

我的数据库助手类(sn-ps):

@Override
public void onCreate(SQLiteDatabase db) {
    db.deleteDatabase(new File(DATABASE_NAME));
    String createTable = ("CREATE TABLE " + Contract.YourEntry.TABLE_NAME + " (" +
            Contract.YourEntry.intWhereToGoListOID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            Contract.YourEntry.COL2 + "TEXT);"
    );
    db.execSQL(createTable);

public boolean addData(String string) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();

    //Wo dass die values hingelegt werden @COL2
    values.put(Contract.YourEntry.COL2, string);

我在这里得到错误:

    long result = db.insert(Contract.YourEntry.TABLE_NAME, null, values);
    //if date as inserted incorrectly it will return -1
    if (result == -1) {
        return false;
    } else {
        return true;
    }
}

感谢您的回答,如果您有任何问题,请在下面的 cmets 中提问:)

【问题讨论】:

  • TEXT后加空格

标签: java android database sqlite


【解决方案1】:

显然,您在创建数据库时缺少空格:

String createTable = ("CREATE TABLE " + Contract.YourEntry.TABLE_NAME + " (" +
        Contract.YourEntry.intWhereToGoListOID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        Contract.YourEntry.COL2 + " TEXT);"
);

在最后一部分,你应该有一个额外的空间" TEXT);",现在是"TEXT);"

【讨论】:

  • 谢谢,很好用!也许你可以给其他人可以看到的赞成票。
【解决方案2】:

SQLiteDatabase 是在第一次调用 SQLiteOpenHelper 时自动创建的,而您正在使用 db.deleteDatabase(new File(DATABASE_NAME)); 行删除它 onCreate。只需删除它,(新)重新安装应用程序,您的数据库应该被正确创建并且插入应该开始工作

请注意,当您创建表格时,例如只有一个,然后您将添加另一列,然后您必须在覆盖的 onUpdate 方法中处理此问题,onCreate 不会再次被调用

【讨论】:

  • 你说得好,但@Sajjad 是对的。但是感谢 onUpdate 的建议:D 也许你可以给其他人可以看到它的投票。
猜你喜欢
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多