Android 机器人分子+;SQLiteStatement.executeUpdateDelete()不';我不采取任何行动

Android 机器人分子+;SQLiteStatement.executeUpdateDelete()不';我不采取任何行动,android,sqlite,robolectric,Android,Sqlite,Robolectric,我需要在表中增加一些整数。 我不想进行选择和连续更新,而是希望通过单个查询来完成。 但是出于运气 以下代码返回0: final SQLiteStatement stmt = helper.getWritableDatabase(). compileStatement("update my_table set my_count = my_count + 1 where _id = ?"); try { stmt.bindLong(1, id); return stmt.ex

我需要在表中增加一些整数。 我不想进行选择和连续更新,而是希望通过单个查询来完成。 但是出于运气

以下代码返回0:

final SQLiteStatement stmt = helper.getWritableDatabase().
    compileStatement("update my_table set my_count = my_count + 1 where _id = ?");
try
{
    stmt.bindLong(1, id);
    return stmt.executeUpdateDelete();
}
finally
{
    stmt.close();
}
当然,没有更新任何记录

但这返回了1:

final ContentValues v = new ContentValues();
v.put("my_count", 1);
return helper.getWritableDatabase().
    update("my_table", v, "_id=?", new String[]{String.valueOf(id)});
具有指定id的记录100%存在。 尝试在事务内或事务外执行此操作-结果相同。 没有在真正的SQLiteStatement上测试,可能是Robolectric错误

有人对此有任何假设吗? 或者关于如何解决此问题的建议(可能不使用
SQLiteStatement

谢谢

更新1。

我还要做一些简单的测试:

@RunWith(RobolectricTestRunner.class)
public class SQLiteStatementTest
{

    private static class TestOpenHelper extends SQLiteOpenHelper
    {
        public TestOpenHelper(Context context)
        {
            super(context, "test", null, 1);
        }

        @Override
        public void onCreate(SQLiteDatabase db)
        {
            db.execSQL("CREATE TABLE test(_id INTEGER PRIMARY KEY AUTOINCREMENT, count INTEGER)");
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
        }
    }

    @Test
    public void testExecuteUpdateDeleteModifiesRow() throws Exception
    {
        final int initialCount = 6;
        final TestOpenHelper helper = new TestOpenHelper(Robolectric.application);

        final ContentValues v = new ContentValues();
        v.put("count", initialCount);
        final long id = helper.getWritableDatabase().insert("test", null, v);

        final SQLiteStatement stmt = helper.getWritableDatabase().
            compileStatement("update test set count = count + 1 where _id=?");

        stmt.bindLong(1, id);
        assertThat(stmt.executeUpdateDelete(), is(1));

    }
}

根据以下消息来源:

executeUpdateDelete()
未实现

由于
callThroughByDefault=false
此方法默认为空实现。这就是为什么我没有得到
运行时异常(“存根!”)

对这个方法进行阴影处理应该很容易,但我在robolectric
2.0-alpha-2

更新1。

将请求拉到卷影
executeUpdateDelete()