java如何在没有entryId的情况下更新SQLiteOpenHelper中的条目?
因此,对于我的安卓应用程序,我想更新我最初通过以下标准方法输入的一行数据,这些数据位于扩展SQLiteOpenHelper的类中:
public boolean insert(String name, int quantity, double price){
ContentValues contentValues = new ContentValues();
contentValues.put(DatabaseContract.Table.COLUMN_NAME_NAME, name);
contentValues.put(DatabaseContract.Table.COLUMN_NAME_QUANTITY, quantity);
contentValues.put(DatabaseContract.Table.COLUMN_NAME_PRICE, price);
long result = db.insert(DatabaseContract.Table.TABLE_NAME, null, contentValues);
if (result == -1)
return false;
else
return true;
}
public void updateData(int id, String name, int quantity, double price){
ContentValues contentValues = new ContentValues();
contentValues.put(DatabaseContract.Table.COLUMN_NAME_ID, id);
contentValues.put(DatabaseContract.Table.COLUMN_NAME_NAME, name);
contentValues.put(DatabaseContract.Table.COLUMN_NAME_QUANTITY, quantity);
contentValues.put(DatabaseContract.Table.COLUMN_NAME_PRICE, price);
db.update(DatabaseContract.Table.TABLE_NAME, contentValues, "ID = ?", new String[]{Integer.toString(id)});
}
在我的实际活动中,我有我想要更改的名称、数量和价格,但当我不知道任意条目的“id”时,我不知道如何进行更改
提前谢谢
# 1 楼答案
我将返回新记录的ID,而不是返回布尔值。比如说,你的应用程序与商店有关,你的名字、数量和价格是Item类的属性,我也会给你的商品添加一个ID属性。在保存(创建)时,在项目中设置ID。这将允许您稍后使用相同的ID进行更新。如果不是,你需要一些其他属性作为主键,但这似乎不是你想要的,也不是一个很好的选择
# 2 楼答案
为了方便和灵活,插入一行后返回ID总是更好。 您可以相应地修改代码以实现这一点
但是,与当前场景一样,如果您没有ID,但仍想更新行,则可以使用其他列并创建条件组合
如果可以指定产品名称(如果是唯一的),则可以在更新(..)中用产品名称替换ID方法
或者,如果您想使用以下条件的组合:
# 3 楼答案
insert方法返回刚插入的行的id,如果插入过程中出现错误,则返回-1
或者更改了表的主键,例如: