首页 > 解决方案 > Android Sqlite 中的 Select 查询中的自定义对象

问题描述

我们可以在选择查询中使用自定义对象从 sqlite db 获取数据吗?

我有这个问题!!

我的数据库

在此处输入图像描述

我想根据类别搜索记录

选择查询

 Cursor res = db.rawQuery("select * from " + RECORD_TABLE_NAME + " where time Like '%" + builder.toString() + "%'"+ " and category like '%"+category1+"%'", null);

完整代码

     public List<Record> getRecordByMonthViaCatName(String monthName, String year,String category) {
         List<Record> array_list = new ArrayList<>();

    StringBuilder builder = new StringBuilder();
    builder.append(monthName);
    builder.append(year);

    Gson gson = new Gson();
    Category category1 = gson.fromJson(category,Category.class);
   
    SQLiteDatabase db = this.getReadableDatabase();

      try {
        Cursor res = db.rawQuery("select * from " + RECORD_TABLE_NAME + " where time Like '%" + builder.toString() + "%'"+ " and category like '%"+category1+"%'", null);
        res.moveToFirst();
      
       while (!res.isAfterLast()) {
        
                       String accountObj = res.getString(res.getColumnIndex(RECORD_ACCOUNT)); //accountF
            String catObj = res.getString(res.getColumnIndex(RECORD_CATEGORY_OBJ));
            String accountObjT = res.getString(res.getColumnIndex(RECORD_TRANSFER_T));

            AccountModel account = gson.fromJson(accountObj, AccountModel.class);
            Category category = gson.fromJson(catObj, Category.class);
            accountObjT = gson.fromJson(accountObjT, AccountModel.class) == null ? null : accountObjT;
            AccountModel accountT = gson.fromJson(accountObjT, AccountModel.class);

              array_list.add(new Record(Integer.parseInt(res.getString(res.getColumnIndex(RECORD_ID))), res.getString(res.getColumnIndex(RECORD_TIME)),
                    Integer.parseInt(res.getString(res.getColumnIndex(RECORD_TYPE))), new BigDecimal(res.getString(res.getColumnIndex(RECORD_AMOUNT))), res.getString(res.getColumnIndex(RECORD_NOTE))
                    , account, category, account, accountT));
            res.moveToNext();
        }
     return array_list;
    }  catch (Exception e) {
          Log.e("error", "getAllRecord: " + e.getMessage());
 }
    return null;
}

提前感谢您的解决方案!

标签: androidsqldatabasesqliteandroid-studio

解决方案


推荐阅读