繁体   English   中英

如何检查数据是否已经存在以按ID进行检查

[英]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约束。 但是,由于SQLiteDatabaseinsert方法有效地使用INSERT或IGNORE,因此将约束错误视为错误而忽略,因此不会插入该行,并且将返回id到-1并将其返回-1。

要实现上述架构更改,您需要删除表并重新创建它。

如果没有任何当前数据或当前数据可能丢失,那么有两种简单的方法可以执行更改:

  1. 删除应用程序的数据,然后重新运行该应用程序。
  2. 卸载该应用程序,然后重新运行该应用程序。

如果必须保留现有数据,则最好编写和onUpgrade例程:

  1. 使用新架构创建工作表的空版本
  2. 将原始表中的所有行插入到新表中。
  3. 重命名原始表(使用ALTER TABLE)
  4. 将新表重命名为原始表的名称
  5. DROPs重命名的原始表。

该例程还应使用整数(旧版本和新版本)以确保该例程仅针对特定版本号更改运行。

完成上述所有操作后,您便可以更改版本号。

注意

以上假设表格是购物车

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM