【发布时间】:2019-09-28 18:21:45
【问题描述】:
我有一个列 (A),我希望它的值是列 (B) 与列 (C) 的乘积。
如何在 android room 数据库中实现这个? 我需要在 Dao、存储库、viewmodel 和 Activity 中添加什么才能使其正常工作?
【问题讨论】:
标签: android sql database sqlite android-room
我有一个列 (A),我希望它的值是列 (B) 与列 (C) 的乘积。
如何在 android room 数据库中实现这个? 我需要在 Dao、存储库、viewmodel 和 Activity 中添加什么才能使其正常工作?
【问题讨论】:
标签: android sql database sqlite android-room
通过以下代码完成:
首先在Dao中添加如下代码:
@Query ("UPDATE table SET A = B*C")
void multiply();
然后将此 AcyncTask 添加到存储库:
private static class MultiplyAsyncTask extends AsyncTask<Void, Void, Void> {
private SomeDao asyncTaskDao;
MultiplyAsyncTask(SomeDao dao) {
asyncTaskDao = dao;
}
@Override
protected Void doInBackground(Void... voids) {
asyncTaskDao.multiply();
return null;
}
}
。 . . 并且此代码也应该在存储库中实现:
public void multiplyColumns(){
MultiplyAsyncTask task = new MultiplyAsyncTask (SomeDao);
task.execute();
}
然后调用ViewModel中的方法:
public void multiplyColumns(){
repository.multiplyColumns();
}
最后在onActivityResult中的表中插入数据的Activity/Fragment中实现这个方法:
SomeViewModel.insertData(data);
SomeViewModel.multiplyColumns();
这对我有用,但如果您有更好的解决方案,请在此处分享。
【讨论】: