【问题标题】:How to customize Room Database Query results that we can achieve in normal SQLite Open helper class如何自定义我们可以在普通 SQLite Open 助手类中实现的房间数据库查询结果
【发布时间】:2020-09-17 23:24:47
【问题描述】:

Room 数据库中,我们将查询编写为DAO 以从数据库中获取结果。在普通的 SQLite OpenHelper 类中,我们可以根据需要自定义查询结果。

public ArrayList<MyData> getMyData(String id) {
        ArrayList<MyData> entries=new ArrayList<>();
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "SELECT * FROM " + MYDATA + " WHERE " + ID + " = ?";
        Cursor c1 = db.rawQuery(query, new String[]{id});
        List<String> business=new ArrayList<>();
        if(c2.moveToFirst()){
                MyData entry=new MyData();
                entry.setId(c2.getString(0));
                String dataValue=c2.getString(1);
                String val="";
                if(dataValue.contains("__")){
                    String[] valueSplit =dataValue.split("__");
                    if(valueSplit[0]!=null){
                        val=address[0];
                    }
                }else{
                    val="";
                }
                entries.add(entry);
            }
        return entries;
    }  

在这个查询中,从数据库中获取的结果是根据一些条件自定义的,添加到 ArrayList MyData 对象中,然后返回最终结果。如何在房间数据库中完成

【问题讨论】:

    标签: android sqlite android-room sqliteopenhelper


    【解决方案1】:

    如果我正确理解您的问题,您可以像这样在您的 DAO 中使用@query

    @Query("SELECT * FROM MYDATA WHERE id = :id")
    public ArrayList<MyData> getMyData(String id);
    

    然后在您的数据库视图模型中公开getMyData(String id) 并处理您的数据

    【讨论】:

    • 是的。这可能是方法之一。谢谢
    猜你喜欢
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    相关资源
    最近更新 更多