Select sqlite android

Select sqlite android

我有一个带有条件的查询,但它返回一个空结果,即使我有符合这些条件的数据。我是初学者,所以我不确定这个查询是否正确。

public Cursor raw() {    
    SQLiteDatabase db = this.getReadableDatabase();
    String select = "SELECT * FROM table_person WHERE data >= " + SelecionarPeriodo.dataInicial + " AND " + "data <=" + SelecionarPeriodo.dataFinal;

    Cursor res = db.rawQuery( select, new String[]{});
    Log.i("String", select);

    return res;
}

如果我删除这个条件并使用如下查询

SELECT * FROM table_person

我有与我要获取的日期对应的结果和列。

您编写查询的方式实际上是将 data 列与 0 列进行比较,因为像 14/12/2020 这样的值被视为包含数字之间的除法的表达式 14122020 结果为 0

如果你想在 SQLite 中比较日期,你必须使用类似 YYYY-MM-DD 的可比较格式,这是 SQLite 唯一有效的文本日期格式。
因此,如果您以任何其他格式将日期存储在列 data 中,您最好将其更改为 YYYY-MM-DD.
您还必须对将与 data.

进行比较的参数 SelecionarPeriodo.dataInicialSelecionarPeriodo.dataFinal 使用相同的格式

然后使用推荐的安全方式在rawQuery()的第二个参数中传递参数:

public Cursor raw() {    
    SQLiteDatabase db = this.getReadableDatabase();
    String select = "SELECT * FROM table_person WHERE data >= ? AND data <= ?" + ;
    Cursor res = db.rawQuery(select, new String[]{SelecionarPeriodo.dataInicial, SelecionarPeriodo.dataFinal});
    Log.i("String", select);
    return res;
}