如何通过将另外两列相乘来更新android room数据库中的列值?
我有一列(a),我希望它的值是(B)列乘以(C)列 如何在android room数据库中实现这一点?如何通过将另外两列相乘来更新android room数据库中的列值?,android,sql,database,sqlite,android-room,Android,Sql,Database,Sqlite,Android Room,我有一列(a),我希望它的值是(B)列乘以(C)列 如何在android room数据库中实现这一点? 我需要在Dao、存储库、视图模型和活动中添加什么才能使其正常工作?通过以下代码完成: 首先在Dao中添加以下代码: @Query ("UPDATE table SET A = B*C") void multiply(); 然后将此AcyncTask添加到存储库: private static class MultiplyAsyncTask extends AsyncTask<
我需要在Dao、存储库、视图模型和活动中添加什么才能使其正常工作?通过以下代码完成: 首先在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中的表中:
SomeViewModel.insertData(data);
SomeViewModel.multiplyColumns();
这对我很有效,但如果你有更好的解决方案,请在这里分享