【问题标题】:How to update a column value in android room database by the multiplication of another two columns?如何通过将另外两列相乘来更新android房间数据库中的列值?
【发布时间】:2019-09-28 18:21:45
【问题描述】:

我有一个列 (A),我希望它的值是列 (B) 与列 (C) 的乘积。

如何在 android room 数据库中实现这个? 我需要在 Dao、存储库、viewmodel 和 Activity 中添加什么才能使其正常工作?

【问题讨论】:

    标签: android sql database sqlite android-room


    【解决方案1】:

    通过以下代码完成:

    首先在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();
    

    这对我有用,但如果您有更好的解决方案,请在此处分享。

    【讨论】:

      猜你喜欢
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 2022-06-20
      • 1970-01-01
      相关资源
      最近更新 更多