android.database.sqlite.SQLiteException:table没有这样的列

Abd*_*man 2 java database sqlite android insert

所以我想这是一个非常普遍的问题,在网上搜索我发现我不是唯一一个遇到这种问题的人,是的我知道有一个几乎相同标题的问题,但这无助于解决问题我面临...所以让我们从头开始

我只是想插入我创建的表中.该表有三列:"id","name","value",创建如下

public static final String TABLE_NAME = "cookie";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_VALUE = "val";

private static final String DATABASE_NAME = "commments.db";
private static final int DATABASE_VERSION = 2;

// Database creation sql statement
private static final String DATABASE_CREATE = "create table "
  + TABLE_NAME + "(" 
  + COLUMN_ID + " integer primary key autoincrement, " 
  + COLUMN_VALUE + "text not null, "
  + COLUMN_NAME + " text not null"
  + ");";

public MySQLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase database) {
  database.execSQL(DATABASE_CREATE);
}
Run Code Online (Sandbox Code Playgroud)

现在我尝试按以下方式插入此表

ContentValues values = new ContentValues();
        values.put(MySQLiteHelper.COLUMN_NAME, "username");
        values.put(MySQLiteHelper.COLUMN_VALUE, username);

        long insertId = database.insert(MySQLiteHelper.TABLE_NAME, null, values);
        Cursor cursor = database.query(MySQLiteHelper.TABLE_NAME, allColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, null, null, null, null);
        cursor.moveToFirst();
        nameValuePair newComment = cursorToNameValuePair(cursor);
        cursor.close();
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误

table cookie has no column named val 
Run Code Online (Sandbox Code Playgroud)

我在网上搜索类似的问题,大多数解决方案都在谈论数据库发生了变化,所以我需要

1-在尝试再次以调试模式运行之前卸载应用程序2-将数据库版本从1更新为3

然而,这没有帮助..所以期待你的解决方案:)

Pan*_*mar 9

问题在这里

+ COLUMN_VALUE + "text not null, "
Run Code Online (Sandbox Code Playgroud)

成为DATABASE_CREATEString.您错过了列名称列类型之间的空间.

它应该是

+ COLUMN_VALUE + " text not null, "
Run Code Online (Sandbox Code Playgroud)