Android OrmLite:检查CreateOrUpdate是否更改了任何值
在不构建自定义SQL语句的情况下,是否有办法检查OrmLite的CreateOrUpdate调用是否确实更改了数据库中的任何值Android OrmLite:检查CreateOrUpdate是否更改了任何值,android,ormlite,Android,Ormlite,在不构建自定义SQL语句的情况下,是否有办法检查OrmLite的CreateOrUpdate调用是否确实更改了数据库中的任何值 Dao.CreateOrUpdateStatus.getNumLinesChanged()返回受影响的行值,因此如果更新的对象没有任何更改,结果也是1。我将以下方法添加到我的类中,并在每个setXXX方法中调用其中一个方法 private boolean objectChanged = false; private void checkChanged(Object o
Dao.CreateOrUpdateStatus.getNumLinesChanged()
返回受影响的行值,因此如果更新的对象没有任何更改,结果也是1。我将以下方法添加到我的类中,并在每个setXXX方法中调用其中一个方法
private boolean objectChanged = false;
private void checkChanged(Object ob1, Object ob2) {
if (ob1 == null && ob2 == null) {
// both null = same, do nothing
return;
} else if (ob1 == null || ob2 == null) {
// only one null
objectChanged = true;
} else if (ob2.equals(ob1)) {
// same, do nothing
return;
} else {
objectChanged = true;
}
}
private void checkChanged(int int1, int int2) {
if (int1 != int2) {
objectChanged = true;
}
}
这是一个有效的解决方案,但我不喜欢它。如果有人有更好的解决方案,无需打额外的数据库电话,请告诉我。试试这个:(付款表示例)
我不太明白这个问题。您是否正在尝试测试DB更新是否有效?否,它是否更改了任何值:如果我使用行中已存在的相同值进行了更新,或者更新是否更改了某些内容。噢。您可以使用条件(
update…WHERE field!=newValue…
)进行更新,但这不适用于createOrUpdate()
。是的,我看不出ORMLite在这里有什么帮助。没有两个对象可供比较,除非您指的是默认情况下未启用的内部对象缓存。
try {
final Dao paymentsTable = getHelper().getPaymentsTable();
Dao.CreateOrUpdateStatus changedRows = paymentsTable.createOrUpdate(_payments);
Log.e("WAS CREATED", Boolean.toString(changedRows.isCreated()) );
Log.e("WAS UPDATED", Boolean.toString(changedRows.isUpdated()) );
} catch (SQLException e) {
e.printStackTrace();
}