Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OrmLite:检查CreateOrUpdate是否更改了任何值_Android_Ormlite - Fatal编程技术网

Android 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

在不构建自定义SQL语句的情况下,是否有办法检查OrmLite的CreateOrUpdate调用是否确实更改了数据库中的任何值


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();
        }