私はレルムプログラミングで初心者です。コードを書いて、レルムテーブルにいくつかの値を挿入することができます。初めて、キーで項目を選択し、存在する場合は削除した後、新しい項目を挿入しました。 これは私が私のアプリを実行すると、私はHAVA私が間違っているかわからないとどのように私はこの問題を解決することができますレルム内の行を削除できません
java.lang.IllegalStateException: Nested transactions are not allowed. Use commitTransaction() after each beginTransaction().
がクラッシュする?私のコード
private void insertIntoDatabase()
{
mRealm.beginTransaction();
mRealm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
RealmResults<VinScannerHistoryModel> rows =
realm.where(VinScannerHistoryModel.class)
.equalTo("userName",vinScannerModel.getName())
.equalTo("vinNumber",vinNumber.getText().toString())
.findAll();
if(rows!=null)
{
rows.clear();
realm.commitTransaction();
}
}
});
ImagesObject imagesObject = mRealm.createObject(ImagesObject.class);
VinScannerHistoryModel vinScannerHistoryModel = mRealm.createObject(VinScannerHistoryModel.class);
vinScannerHistoryModel.setVinNumber(vinNumber.getText().toString());
vinScannerHistoryModel.setStatus(status);
vinScannerHistoryModel.setManufacturer(manufacturer);
vinScannerHistoryModel.setModel(model);
vinScannerHistoryModel.setYear(year);
vinScannerHistoryModel.setVin(vin);
vinScannerHistoryModel.setTerminal_out_date(terminal_out_date);
if(Global.imagePath!=null && Global.imagePath.size()>0)
{
for (int i = 0; i < Global.imagePath.size(); i++) {
imagesObject.setImageName(Global.imagePath.get(i));
vinScannerHistoryModel.getImagesObjects().add(imagesObject);
}
}
if(checkBox.isChecked())
vinScannerHistoryModel.setKey("1");
else
vinScannerHistoryModel.setKey("0");
vinScannerHistoryModel.setPolygon(polygonAdapter.getItem(spinnerPosition).getId()+"");
vinScannerHistoryModel.setUserName(vinScannerModel.getName());
mRealm.commitTransaction();
}
ですか例外の P.S 私が言ったように、私は初心者レルムプログラミングだと、あなたのオプションで、それは私のDBに重複した項目を削除する正しい方法です 感謝
'mRealm.beginTransaction()私の自己を解かれ;'と 'mRealm.executeTransaction()'両方とも)(executeTransaction '除いて、新しいトランザクションを開始'は例外を処理するだけでなく、トランザクションを取り消すことで例外を処理します。 – EpicPandaForce
「重複削除」については? '@ PrimaryKey'を使って" duplications "を持たないようにしてください – EpicPandaForce