更新 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
以检查更新的行数。
我正在尝试更新 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
以检查更新的行数。