更新sqlite表Android中的一行

时间:2018-02-06 06:20:40

标签: android android-recyclerview sql-update android-sqlite

我正在尝试更新一行表中的2个值,这些值还包含另外7个未更改的值。 更新代码:

 public int UpdateItem(int tableId, String itemname, String modifiername, int count, double totalPrice) {
        SQLiteDatabase db = this.getWritableDatabase();


        ContentValues values = new ContentValues();
        values.put(DbSchema.ORDERED_ITEM_QUANTITY, count);
        values.put(DbSchema.ORDERED_ITEM_TOTAL_PRICE, totalPrice);

                  return db.update(DbSchema.KOT_TABLE, values, DbSchema.TABLE_ID + " = " + tableId +
                        " AND " + DbSchema.ORDERED_ITEM_NAME + " = '" + itemname +
                        "' AND " + DbSchema.ORDERED_ITEM_MODIFIER_NAME + " = '" + modifiername + "'",
                null);

    }

通过适配器的项目单击来调用更新:

 holder.incrementButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int count = Integer.parseInt(holder.itemCount.getText().toString());
                holder.itemCount.setText("" + (count + 1));
                filteresKotItemArrayList.get(position).setOrderedItemQuantity(count + 1);
                Double totalPrice = Double.parseDouble(holder.totalAmount.getText().toString()) + kotItem.getOrderedItemBasePrice();
                holder.totalAmount.setText(String.valueOf(totalPrice));
                filteresKotItemArrayList.get(position).setOrderedItemTotalPrice(totalPrice);

                dbOpenhelper.UpdateItem(kotItem.getTableId(), kotItem.getOrderedItemnme(), kotItem.getOrderedItemModifierName(), (count + 1), totalPrice);
                notifyDataSetChanged();
            }
        });

在模型类中,它正在工作,但是db没有更新。当我通过更新db重新打开当前列表时,它没有更新它们。

kotItemList = dbOpenhelper.getKOTList(tableId);

没有显示错误。我该如何更新该行 也使用查询来做到这一点,但没有结果。

String strSQL = "UPDATE " + DbSchema.KOT_TABLE + " SET " +
                DbSchema.ORDERED_ITEM_QUANTITY + " = " + count + ","
                + DbSchema.ORDERED_ITEM_TOTAL_PRICE + " = " + totalPrice +
                " WHERE " + DbSchema.TABLE_ID + " = " + tableId +
                " AND " + DbSchema.ORDERED_ITEM_NAME + " = '" + itemname +
                "' AND " + DbSchema.ORDERED_ITEM_MODIFIER_NAME + " = '" + modifiername + "'";
db.execSQL(strSQL);

1 个答案:

答案 0 :(得分:0)

检查导致问题的where子句。 尝试只使用where子句--- DbSchema.ORDERED_ITEM_NAME =“xyz”更新值。 另请检查表格中是否存在DbSchema.ORDERED_ITEM_NAME值