如何基于列获取sqlite数据

时间:2018-07-25 11:17:33

标签: android android-sqlite

我用年和月将数据保存在sqlite db中,现在想根据年和月检索数据,但是object始终为null。 这是我的代码

  public List<AddIncomeModel> fetch(String year,String month) {
    database = this.getReadableDatabase();
   // Cursor cursor = database.query(TABLE_NAME, null, null, null, null, null, null);
    Cursor cursor=database.rawQuery("SELECT * FROM " + TABLE_NAME+" WHERE "  +YEAR +" = "+year+" AND " + MONTH + " = "+month,null);

    List<AddIncomeModel> contacts = new ArrayList<AddIncomeModel>();
    AddIncomeModel contactModel;
    if (cursor.getCount() > 0) {
        for (int i = 0; i < cursor.getCount(); i++) {
            cursor.moveToNext();
            contactModel = new AddIncomeModel();
            contactModel.setId(cursor.getInt(0));
            contactModel.setIncome_source(cursor.getString(1));
            contactModel.setDescription(cursor.getString(2));
            contactModel.setAmount(cursor.getString(3));
            contacts.add(contactModel);
        }
    }
    cursor.close();
    database.close();
    return contacts;
}

请告诉我我要去哪里错了。 谢谢

1 个答案:

答案 0 :(得分:2)

在SQLiteDatabase.query()中,选择分为两部分。 where子句(一个字符串)和whereArgs(一个字符串数组)。

要在where子句中添加多个条件,可以使用AND或OR,就像&&或||在Java中。

where子句中的问号绑定到whereArgs数组中的字符串之一。

尝试这样

cursor = db.query(TABLE_NAME, new String[] { ID, YEAR , MONTH},
YEAR + " LIKE ? AND " + MONTH+ " LIKE ?",                           
new String[] {"%" + dan + "%", "%" + vrijeme + "%"},
null, null, null, null);