我有一个recyclerview持卡人,使用' NAME'来自表格' ORDERTABLE'。持卡人还有一个EditText,显示列'QUANTITY'的值。在我的SQLite数据库中。
我还有一个按钮,可以为EditText中的每个更改更新数据库。
我有这个表ORDERTABLE
id NAME QUANTITY
1 Order1 1
2 Order2 1
3 Order3 1
4 Order4 1
更具体一点,我如何使用EditText的新值更新onButtonPressed上的Order2的QUANTITY。
编辑...
我试过这段代码但没有发生任何事情
按钮更新值
public void addButtonClick(TextView tv_cardrowName_atc, TextView tv_currentPrice_atc, EditText et_quantity_atc, int position) {
int thisQuantity = Integer.parseInt(et_quantity_atc.getText().toString());
thisQuantity++;
String orderName = tv_cardrowName_atc.getText().toString();
String oldQuantity = et_quantity_atc.getText().toString();
String newQuantity = String.valueOf(thisQuantity);
sqliteCBLCAdapter.selectUpdateItem(orderName, oldQuantity, newQuantity);
et_quantity_atc.setText(String.valueOf(thisQuantity));
}
更新方法
public String selectUpdateItem(String orderName, String oldQuantity, String newQuantity) {
SQLiteDatabase sqLiteDatabase = sqLiteCBLC.getWritableDatabase();
String[] columns = {SQLiteCBLC.COL_ORDNAME, SQLiteCBLC.COL_QUANTITY};
Cursor cursor = sqLiteDatabase.query(SQLiteCBLC.TABLE_NAME, columns, SQLiteCBLC.COL_ORDNAME + " = '" + orderName + "'", null, null, null, null);
StringBuffer stringBuffer = new StringBuffer();
while (cursor.moveToNext()) {
int index1 = cursor.getColumnIndex(SQLiteCBLC.COL_ORDNAME);
int index2 = cursor.getColumnIndex(SQLiteCBLC.COL_QUANTITY);
String order = cursor.getString(index1);
String quantity = cursor.getString(index2);
ContentValues contentValues = new ContentValues();
contentValues.put(SQLiteCBLC.COL_QUANTITY, newQuantity);
String[] whereArgs = {quantity};
sqLiteDatabase.update(SQLiteCBLC.TABLE_NAME, contentValues, SQLiteCBLC.COL_QUANTITY + " =? ", whereArgs);
stringBuffer.append(order);
}
return stringBuffer.toString();
}
答案 0 :(得分:2)
实现此目的的最简单方法是使用SQL更新查询,如下所示:
来自SQLite网站:
SQLite UPDATE Query用于修改表中的现有记录。您可以使用带有UPDATE查询的WHERE子句来更新所选行,否则将更新所有行。
更新查询的语法如下:
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
所以在你的情况下你的sql更新查询会看起来像这样:
UPDATE ORDERTABLE SET QUANTITY = (INSERT VALUE OF YOUR EDIT TEXT) WHERE NAME = 'Order2'
然后,您可以使用您拥有的SQLiteDatabase对象的execSQL()方法执行查询,并将上面的sql查询作为字符串参数传递。
答案 1 :(得分:1)
您可以尝试以下代码,在您的情况下,您在更新时根据数量进行更新,多个订单将具有相同的数量。只需检查订单名称并进行更新。
try {
downloadId = await dispatch(requestDownload('SOME_URL'));
} catch(ex) {
console.log('download already existed, so request denied');
}