Android SQLite事务回滚工具?
我必须独立插入三张表。。但如果第一个表插入成功,则只需要第二个表来插入数据。如果插入第二个表时发生任何错误,则需要回滚第一个表的最后一个插入表,同样,第三个表也: 我现在是这样做的:Android SQLite事务回滚工具?,android,sqlite,Android,Sqlite,我必须独立插入三张表。。但如果第一个表插入成功,则只需要第二个表来插入数据。如果插入第二个表时发生任何错误,则需要回滚第一个表的最后一个插入表,同样,第三个表也: 我现在是这样做的: DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(RetailerOrderActivity.this); dbAdapter.openDataBase(); for (Map.Entry<String, MyProduct> entr
DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(RetailerOrderActivity.this);
dbAdapter.openDataBase();
for (Map.Entry<String, MyProduct> entry : myProductMap.entrySet()) {
String key = entry.getKey();
MyProduct myProduct = entry.getValue();
ContentValues initialValue = new ContentValues();
initialValue.put("BusinessUnit",strBusinessUnit);
initialValue.put("ExecutiveCode",strExecutive);
if(salesType.equalsIgnoreCase("I")){
initialValue.put("InvoiceNo",transactionControl.getNextInvoiceNo());
initialValue.put("SalesCategory",transactionControl.getInvoicePrefix());
}else if(salesType.equalsIgnoreCase("O")){
initialValue.put("InvoiceNo",transactionControl.getNextOrderNo());
initialValue.put("SalesCategory",transactionControl.getOrderPrefix());
}
initialValue.put("ProductCode",key);
initialValue.put("LineNumber",i);
initialValue.put("Qty",myProduct.getQty());
initialValue.put("UnitPrice",myProduct.getPrice());
initialValue.put("DiscountValue",myProduct.getDisValue());
initialValue.put("DiscountQty",myProduct.getDisQty());
long nl = dbAdapter.insertRecordsInDB("WMInvoiceLine", null, initialValue);
//update WMStockRecord table
if(nl != -1 ){
if((salesType.equalsIgnoreCase("I") && orderStockValidation.equals("1")) || (salesType.equalsIgnoreCase("O") && orderStockValidation.equals("1"))){
ContentValues stockValue = new ContentValues();
if(myProduct.getAvailableQuantity() < myProduct.getQty()){
stockValue.put("Stock",0.00);
}else{
double tmp = myProduct.getAvailableQuantity() - myProduct.getQty();
stockValue.put("Stock",tmp);
}
stockValue.put("LastUpdatedOn",strDate);
stockValue.put("LastUpdatedBy",strExecutive);
stockValue.put("ActiveStatus","1");
String whereCon = "BusinessUnit = '"+ strBusinessUnit +"' WarehouseCode = '"+defaultSalesWarehouse + "' LocationCode = '" + defaultSalesLocation + "' ProductCode = '" + key + "'";
long stock = dbAdapter.updateRecordsInDB("WMStockRecord", stockValue, whereCon, null);
}
//TO-DO WMInvoicekit
}
i++;
insertStatus = true;
lineStatus = true;
}
DBAdapter DBAdapter=DBAdapter.getdbadapterninstance(RetailerOrderActivity.this);
dbAdapter.openDataBase();
对于(Map.Entry:myProductMap.entrySet()){
String key=entry.getKey();
MyProduct MyProduct=entry.getValue();
ContentValues initialValue=新的ContentValues();
initialValue.put(“业务单位”,strBusinessUnit);
initialValue.put(“ExecutiveCode”,strExecutive);
if(salesType.equalsIgnoreCase(“I”)){
put(“InvoiceNo”,transactionControl.getNextInvoiceNo());
initialValue.put(“SalesCategory”,transactionControl.getInvoicePrefix());
}else if(salesType.equalsIgnoreCase(“O”)){
put(“InvoiceNo”,transactionControl.getNextOrderNo());
initialValue.put(“SalesCategory”,transactionControl.getOrderPrefix());
}
initialValue.put(“ProductCode”,键);
初始值。输入(“行号”,i);
initialValue.put(“数量”,myProduct.getQty());
initialValue.put(“单价”,myProduct.getPrice());
initialValue.put(“折扣值”,myProduct.getDisValue());
initialValue.put(“折扣数量”,myProduct.getDisQty());
long nl=dbAdapter.insertRecordsInDB(“WMInvoiceLine”,null,initialValue);
//更新WMStockRecord表
如果(nl!=-1){
if((salesType.equalsIgnoreCase(“I”)和&orderStockValidation.equals(“1”))| |(salesType.equalsIgnoreCase(“O”)和&orderStockValidation.equals(“1”)){
ContentValues stockValue=新的ContentValues();
if(myProduct.getAvailableQuantity()
但这里没有交易不可用。我们如何实现事务工具?我使用的是
DBAdapter
您必须设置事务,如果事务成功,您必须提交该事务,否则您必须取消该事务
有关更多信息,请参考此答案