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 に答える