1

我正在尝试更新我的数据库以拥有另一个名为 Visible 的列。我希望整个列都填充错误值。当我运行代码时,它会进入更新函数并抛出以下错误:

android.database.sqlite.SQLiteException: no such column: true: UPDATE Themes2 SET Visibility = true;

private static final String TABLE_THEMES_V2 = "Themes2";
public static final String KEY_VISIBLE = "Visibility";

if (oldVersion < 8) {

            db.execSQL("ALTER TABLE " + TABLE_THEMES_V2 + " ADD COLUMN " + KEY_VISIBLE + " text");
            db.execSQL("UPDATE " + TABLE_THEMES_V2 + " SET " + KEY_VISIBLE + " = true;");

            db.setTransactionSuccessful();
        }

有谁知道出了什么问题?很久以前我使用相同的功能在列中输入“1”......

4

1 回答 1

1

您的 KEY_VISIBLE 列具有 Text 数据类型,因此您应该使用以下语法对其进行更新,

db.execSQL("UPDATE " + TABLE_THEMES_V2 + " SET " + KEY_VISIBLE + " = 'true';");

您只是缺少'字符串值中的单个倒置标记。

您可以尝试的替代方法如下,将 KEY_VISIBLE 列设置为整数类型

db.execSQL("ALTER TABLE " + TABLE_THEMES_V2 + " ADD COLUMN " + KEY_VISIBLE + " INTEGER");
db.execSQL("UPDATE " + TABLE_THEMES_V2 + " SET " + KEY_VISIBLE + " = 1;"); // for True
db.execSQL("UPDATE " + TABLE_THEMES_V2 + " SET " + KEY_VISIBLE + " = 0;"); // for False
于 2012-05-27T16:59:00.000 回答