与ormlite在同一行上的两个更新

时间:2017-02-17 15:47:35

标签: android ormlite

我正在尝试处理同一个对象,但我不能再做两次更新了另一个:

    DatabaseHelper db = new DatabaseHelper(getActivity());

    Dao<Demandes, Integer> demandesDao = null;
    demandesDao = db.getDemandesDao();
    UpdateBuilder<Demandes,Integer> updateBuilder = demandesDao.updateBuilder();

    updateBuilder.where().eq("id", demande.getId());

    updateBuilder.updateColumnValue("statutEnvoieSendLead", 1);


    updateBuilder.updateColumnValue("dateEnvoieSendLead", new Date());
    updateBuilder.updateColumnValue("contactWebId", slr.getOption().getContactWebID());
    updateBuilder.update();


    GoogleAnalytics ga = new GoogleAnalytics(getActivity());
    ga.envoieTracker(idApplication, demandeId, logement, typeForm);


    XMLSendSimulation xmlSendSimulation = new XMLSendSimulation(slr.getOption().getContactWebID());
    xml = XMLGenerator.GenerateSendSimulationXml(xmlSendSimulation);
    updateBuilder.where().eq("id", demande.getId());
    updateBuilder.updateColumnValue("xmlSimulation", xml);
    updateBuilder.update();

1 个答案:

答案 0 :(得分:0)

  

我试图处理同一个对象,但我又无法再做两次更新:

分享尝试代码时生成的异常会对您有所帮助。我怀疑你得到某种SQL异常?

问题是UpdateBuilder在调用update()后不会忘记之前的信息。您可以使用updateBuilder.reset()让它忘记之前的eq(...)updateColumnValue(...)来电,或者只是创建一个新的UpdateBuilder实例。没有reset(),您只是添加到之前的通话中。