我在购物车中添加了一个商品,通过product_id来检查购物车中是否存在商品,如果商品存在,它将更新数量,如果不添加商品,则在购物车中有活动待处理按钮,用户可以使购物车待定或活动,当用户单击购物车“活动”中的待处理按钮时,购物车将被清除,在待处理活动中cart1将显示为待处理,然后当下一个用户在购物车中添加项目时,第二个购物车将显示为活动。

但是在我的情况下:-cart1进入待处理状态,活动中的数据也清除了,但是当尝试从购物车活动中添加购物车中的项目时,它问您是否要更新?而无法创建第二个购物车。

我如何执行此任务:-
1.在将数据插入购物车中时,如果将index_id与外键插入待处理表中,则如果存在index_id,则在插入第二个购物车时不重复index_id,如果index_id不为2,则不重复。

但是我认为这个问题是通过执行rollback命令解决的,当用户使cart1挂起时,数据将被pend_id删除,并且当用户单击cart1活动按钮时,将执行rollback命令并添加cart项目。

我将如何执行此代码,我不知道我已尝试过该代码,但无法正常工作

     public void PendingCart(int p_id,String status){
         final SQLiteDatabase db = this.getWritableDatabase();
         try{ db.beginTransaction();
        String update ="Update PendingCart set status=? where status=?";
        String delete = "Delete from PendingCart where P_ID=?";
        String insert= "Select * from PendingCart where P_ID=?";
        String rollback= "rollback";
        db.execSQL(update,new String[]{String.valueOf( status )});
       db.execSQL(delete,new String[]{String.valueOf( p_id )});
        db.execSQL(insert,new String[]{String.valueOf( p_id )});
        db.execSQL( rollback);
//      db.execSQL(insert,new String[]{String.valueOf( p_id )});
         // db.setTransactionSuccessful();
        }catch (Exception e){e.printStackTrace();}finally
   {db.endTransaction();
         }}
       public List<PendingModel>GetCart_list(){
       SQLiteDatabase db = this.getWritableDatabase();
       List<PendingModel> list = new ArrayList<>();
       String query= "Select
 CART.CART_ID,CART.prod_id,CART.Index_id,CART.Barcode,CART.Amount,CART.Grand
_Total,CART.Quantity,CART.Price,CART.status,PendingCart.P_ID,PendingCart.sta
us,PendingCart.Created_Date,PRODUCT.Product_Price,Prod_quantity,PRODUCT.PricType,PRODUCT.Item_Name,PRODUCT.Image,PRODUCT.CGST,PRODUCT.SGST from PRODUCT
       join CART ON CART.prod_id= PRODUCT.prod_id inner join PendingCart ON
        PendingCart.Customer_ID = CART.Index_id where CART.Index_Id=
       PENDINGCART.Customer_Id AND PendingCart.status = CART.status";
       Cursor cursor = db.rawQuery( query,null);
       if (cursor.moveToFirst()){try {
       do {
       PendingModel rp = new PendingModel();
       rp.setC_ID( Integer.parseInt( cursor.getString( 0 ) ) );
       rp.setP_id( Integer.parseInt( cursor.getString( 1 ) ) );
        rp.setIndex( cursor.getInt( 2 ));
        rp.setC_barcode(cursor.getString( 3 ));
        rp.setC_Amount( cursor.getFloat( 4) );
        rp.setGrand_Total( cursor.getFloat( 5 ) );
        rp.setC_qunanity( cursor.getFloat( 6) );
        rp.setC_price( cursor.getFloat( 7 ));


 rp.setstatus( cursor.getString( 8 ));
 rp.setP_ID( cursor.getInt( 9 ) ) ;
  rp.setC_status( cursor.getString( 10) );
  rp.setCreated_Date( cursor.getString( 11));
    rp.setP_price( cursor.getFloat( 12 ) )
           rp.setP_quantity( cursor.getFloat( 13) );
       rp.setP_pricetype( cursor.getString( 14 ) );
       rp.setP_name( cursor.getString( 15 ));
      rp.setP_image( cursor.getString( 16 ))

    rp.setP_cgst( cursor.getInt(17 ) );
    rp.setP_sgst( cursor.getInt(18 ) );list.add( rp );}
    while (cursor.moveToNext());} catch (Exception e) {
     Log.e( "Error", String.valueOf( e ) );
     } finally {
     cursor.close();
     db.close(); } }
    return list}

最佳答案

try {
    db.beginTransaction();
    // your sql stuff
    db.setTransactionSuccessful();
} catch(SQLException e) {
    // do some error handling
} finally {
   db.endTransaction();
}

10-07 19:32