更新 SQL table 中的单个值 Android

Update single value in SQL table in Android

我正在尝试更新 SQL.db 文件中的值,该文件在 1 table 中只有 1 行。不过,我只想更改 CUSTOMER_ISACTIVE 列。

    public static final String CUSTOMER_TABLE = "CUSTOMER_TABLE";
    public static final String COLUMN_CUSTOMER_EMAIL = "CUSTOMER_EMAIL";
    public static final String COLUMN_CUSTOMER_PASSWORD = "CUSTOMER_PASSWORD";
    public static final String COLUMN_CUSTOMRER_ISMEMBER = "CUSTOMRER_ISMEMBER";
    public static final String COLUMN_CUSTOMER_ISACTIVE = "CUSTOMER_ISACTIVE";
    public static final String COLUMN_CUSTOMER_PAYMENTERROR = "CUSTOMER_PAYMENTERROR";
    public static final String COLUMN_CUSTOMER_AUTOCARDTOKEN = "CUSTOMER_CARDTOKEN";

public void upDateActiveStatus(boolean isActive){
        SQLiteDatabase db = this.getWritableDatabase();
        String SS = "UPDATE " + CUSTOMER_TABLE + " SET " + COLUMN_CUSTOMER_ISACTIVE  + "=" + isActive + " WHERE " + "ID = 1";
        db.execSQL(SS);

但这不起作用。因为当我稍后拉取 isActive 的值时(我知道这部分有效)它是不变的。 有什么想法吗?

这是我的错误: java.lang.RuntimeException: android.database.sqlite.SQLiteException: no such column: true (code 1 SQLITE_ERROR): , while compiling: UPDATE CUSTOMER_TABLE SET CUSTOMER_ISACTIVE = true

更新 table 的推荐方法是使用方法 update()ContentValues
该方法 update() 还 returns 您可以检查的受影响行数。
所以这样做:

public int upDateActiveStatus(boolean isActive){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(COLUMN_CUSTOMER_ISACTIVE, isActive ? 1 : 0);
    int rows = db.update(CUSTOMER_TABLE, cv, "ID = ?", new String[] {"1"});
    db.close();
    return rows;
}

您可以这样调用方法:

int rows = upDateActiveStatus(true);

然后检查变量的值 rows 以检查更新的行数。