【发布时间】:2015-01-31 04:07:09
【问题描述】:
我需要插入与Order 及其对应的Detail 相关的数据。
如果没有ContentProvider,我会这样做:
public boolean insertOrder(Order order, ArrayList<OrderDetail> items) {
boolean wasSuccessful = false;
ContentValues cvOrder = new ContentValues();
cvPedido.put(ORDER_CUSTOMER_ID, order.getCustomerId());
cvPedido.put(ORDER_CUSTOMER_NAME, order.getCustomerName());
String insertQuery = "INSERT INTO " + ORDER_DETAIL_TABLE
+ " VALUES (?,?)";
//...
try {
this.openWriteableDB();
SQLiteStatement statement = db.compileStatement(insertQuery);
db.beginTransaction();
long idOrder = db.insertOrThrow(ORDER_TABLE, null, cvOrder);
if (idOrder > 0) {
for (int i = 0; i < items.size(); i++) {
OrderDetail detail=items.get(i);
statement.clearBindings();
statement.bindString(1, detail.getDescription);
statement.bindDouble(2, detail.getPrice);
//...
statement.execute();
}
db.setTransactionSuccessful();
wasSuccessful = true;
}
} finally {
db.endTransaction();
this.closeDB();
}
return wasSuccessful;
}
问题是现在我想使用ContentProvider,但我不知道如何处理这种情况,即必须将有关两个或多个表的数据传递给单个 CRUD 操作,知道 @ 987654326@操作只接受两个参数:
@Override
public Uri insert(Uri uri, ContentValues values) {
}
当您必须在事务中插入关系数据时,您在 ContentProvider 中做什么?
提前致谢。
【问题讨论】:
标签: android android-sqlite android-contentprovider