[英]How to check if data is already exist to check by ID
我正在开发一个电子商务应用程序并将数据存储在本地数据库中,我用一个按钮进行插入,但是我需要检查产品是否已经添加到购物车中。
我该如何实现?
这是我的桌子:
public static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_PRODUCT_ID + " TEXT,"
+ COLUMN_NAME + " TEXT,"
+ COLUMN_MAIN_IMAGE + " TEXT,"
+ COLUMN_MRP_PRICE + " INTEGER , "
+ COLUMN_DISCOUNT_PRICE + " INTEGER , "
+ COLUMN_QUANTITY + " INTEGER" +")";
这是我的插入查询:
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(OneProductModel.COLUMN_PRODUCT_ID,_id);
values.put(OneProductModel.COLUMN_NAME,name);
values.put(OneProductModel.COLUMN_MAIN_IMAGE,main_image);
values.put(OneProductModel.COLUMN_MRP_PRICE,mrp_price);
values.put(OneProductModel.COLUMN_DISCOUNT_PRICE,discounted_amount);
values.put(OneProductModel.COLUMN_QUANTITY,quantity);
long id = db.insert(OneProductModel.TABLE_NAME,null,values);
db.close();
return id;
一种解决方案是使用以下方法使产品ID( COLUMN_PRODUCT_ID ) 唯一
public static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_PRODUCT_ID + " TEXT UNIQUE,"
+ COLUMN_NAME + " TEXT,"
+ COLUMN_MAIN_IMAGE + " TEXT,"
+ COLUMN_MRP_PRICE + " INTEGER , "
+ COLUMN_DISCOUNT_PRICE + " INTEGER , "
+ COLUMN_QUANTITY + " INTEGER" +")";
这样,如果尝试插入具有已存在产品ID的产品,则将发生UNIQUE约束。 但是,由于SQLiteDatabase的insert方法有效地使用INSERT或IGNORE,因此将约束错误视为错误而忽略,因此不会插入该行,并且将返回id到-1并将其返回-1。
要实现上述架构更改,您需要删除表并重新创建它。
如果没有任何当前数据或当前数据可能丢失,那么有两种简单的方法可以执行更改:
如果必须保留现有数据,则最好编写和onUpgrade例程:
该例程还应使用整数(旧版本和新版本)以确保该例程仅针对特定版本号更改运行。
完成上述所有操作后,您便可以更改版本号。
以上假设表格是购物车
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.