我在购物车中添加了一个商品,通过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();
}