我有一个带有条件的查询,但它返回空结果,即使我有与这些条件匹配的数据。我是初学者,所以我不确定这个查询是否正确。
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
这样的值被视为包含数字 14
、12
和 2020
之间除法的表达式,其结果为 0
。< br/>
如果要比较 SQLite 中的日期,则必须使用可比较的格式,例如 YYYY-MM-DD
,这是 SQLite 唯一有效的文本日期格式。
因此,如果您以任何其他格式将日期存储在 data
列中,最好将其更改为 YYYY-MM-DD
。
您还必须对将与 data
进行比较的参数 SelecionarPeriodo.dataInicial
和 SelecionarPeriodo.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;
}
关于java - 选择sqlite android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65293146/