java - 在 Android 中更新 SQL 表中的单个值
问题描述
我正在尝试更新 1 个表中只有 1 行的 SQL .db 文件中的值。我只想更改 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
解决方案
更新表的推荐方法是使用方法update()
with ContentValues
。
该方法update()
还返回您可以检查的受影响行数。
所以这样做:
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
以检查更新的行数。
推荐阅读
- javascript - Sinon stub 仅记录之前运行过的 react 调用
- html - 在页面的任何地方都可以使用 section 标签吗?
- sharepoint - 不使用 SharePointOnlineCredentials 的 Project Online CSOM
- ruby-on-rails - 查询 IP 地址不包含在 CIDR 列中的记录
- javascript - 将php数组通过html传递给js
- sql - SQL 脚本:ORA-01790
- jenkins - 如何归档目标文件夹中的所有构建版本(工件)
- android - 从 observable 缓存项目直到第一次订阅以处理竞争条件
- automata - 确定性有限自动机整除性问题
- c# - 如果 T 是 int,拳击会在这里发生吗?