android - 如何在 Sqlite android 中用算术表达式更新一行

标签 android sql-update android-sqlite

我想要的是向 Sqlite android 中的现有值添加和删除新值。 我从 android 文档中读到的是这种方法,但它在我的情况下不起作用,因为它用提供的新值删除了现有值。

这是我的代码:

public boolean updateCigaretteStock(String cigaretteName, int quantity, int totalCost) {
    ContentValues values = new ContentValues();
    values.put(CigaretteStockEntry.COLUMN_QTY, quantity);
    values.put(CigaretteStockEntry.COLUMN_TOTAL_COST, totalCost);

    String whereClause = CigaretteStockEntry.COLUMN_CIGARETTE_NAME + " = ?";
    String[] whereArgs = {cigaretteName};

    int rowAffected = writableDatabase.update(CigaretteStockEntry.TABLE_NAME, values, whereClause, whereArgs);
    return (rowAffected > 0);
}

我也试过修改方法:

 public boolean updateCigaretteStock(String cigaretteName, int quantity, int totalCost) {
    ContentValues values = new ContentValues();
    values.put(CigaretteStockEntry.COLUMN_QTY, CigaretteStockEntry.COLUMN_QTY + " + " + quantity);
    values.put(CigaretteStockEntry.COLUMN_TOTAL_COST, CigaretteStockEntry.COLUMN_TOTAL_COST + " + " + totalCost);

    String whereClause = CigaretteStockEntry.COLUMN_CIGARETTE_NAME + " = ?";
    String[] whereArgs = {cigaretteName};

    int rowAffected = writableDatabase.update(CigaretteStockEntry.TABLE_NAME, values, whereClause, whereArgs);
    return (rowAffected > 0);
}

但它也不起作用。它在列中显示值,例如:

(quantity + new value)
(total_cost + new value)

有什么帮助吗?

最佳答案

如果我对您的问题的理解正确,您是在尝试增加以下查询行中的某些列值:

UPDATE CigaretteStock
SET
    qty = qty + ?,
    totalcost = totalcost + ?;

您使用的特定 API 的问题在于它只允许破坏(完全覆盖)给定列中的值。但是,您想实际使用已经存在的值作为更新的一部分。

在这种情况下,我建议只使用 SQLite Android 的准备语句 API:

String sql = "UPDATE CigaretteStock ";
sql += " SET " + CigaretteStockEntry.COLUMN_QTY + " = " +
    CigaretteStockEntry.COLUMN_QTY + " + ?, ";
sql += CigaretteStockEntry.COLUMN_TOTAL_COST + " = " +
    CigaretteStockEntry.COLUMN_TOTAL_COST + " + ?";

SQLiteStatement statement = db.compileStatement(sql);

statement.bindDouble(1, quantity);
statement.bindDouble(2, totalCost);

int numberOfRowsAffected = statement.executeUpdateDelete();

关于android - 如何在 Sqlite android 中用算术表达式更新一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53700541/

相关文章:

java - android 数组通过可绘制资源与 onClick 事件

sql-server - TSQL 使用子查询更新值

android - 处理双向 1 :m in Green-DAO 的正确方法

java - 如果在另一个 Activity 中添加数据,如何更新 recyclerView?

android - 我应该如何编写 SQLite 查询?

java - 如何使用按钮在 fragment 之间切换

android - 使用 Google Checkout 验证 Android 应用内购买?

java - 集成外部纯 Java 库并让 Android 类访问它

mysql - SQL 更新 MySQL 表中一列中 NText 的开头

mysql - 一次将相同的固定百分比插入多行