【发布时间】:2021-06-03 19:57:25
【问题描述】:
我正在运行以下有效的 Room SQL 查询,以便为自动递增的 payee 列查找下一个可用 ID,并希望从中捕获结果作为整数。下面的代码就是这样做的,但它只在使用断点单步执行时有效,而在正常执行时无效:
@Query("SELECT seq FROM SQLITE_SEQUENCE WHERE name = 'payee'")
int getNextAutoIncrementPayeeID();
下面的repository方法调用上面的Dao方法:
public void getNextAutoIncrementPayeeID(OnValueListener listener) {
executor.execute(new Runnable() {
@Override
public void run() {
// Call the listener callback
listener.onValue(db.payeeDao().getNextAutoIncrementPayeeID());
}
});
}
使用的接口:
public interface OnValueListener {
public void onValue(int value);
}
现在value 的结果被分配给一个全局变量payeeId 但是,这仅在运行带有断点的代码时有效:
repository.getNextAutoIncrementPayeeID(new OnValueListener() {
@Override
public void onValue(int value) {
// use "value" which is returned from Room
payeeId = value;
}
});
【问题讨论】:
-
您是否尝试过仅检索 seq 而不是整数数组
"SELECT seq FROM SQLITE_SEQUENCE WHERE name = 'payee'"应该返回int或long
标签: android sql android-room