Java SQlite数据库未按日期排序
我有一个方法,它被设计成在传递到数组时按日期顺序列出一系列事务,但它完全没有顺序出现,我不知道哪里出错了。我没有收到任何错误,但实际上不起作用Java SQlite数据库未按日期排序,java,android,sqlite,android-sqlite,Java,Android,Sqlite,Android Sqlite,我有一个方法,它被设计成在传递到数组时按日期顺序列出一系列事务,但它完全没有顺序出现,我不知道哪里出错了。我没有收到任何错误,但实际上不起作用 public List<Record> getAllAccountRecords() { ArrayList<Record> all_Records = new ArrayList<Record>(); String selectQuery = "SELECT * FROM "
public List<Record> getAllAccountRecords() {
ArrayList<Record> all_Records = new ArrayList<Record>();
String selectQuery = "SELECT * FROM " + TABLE_HISTORY +" ORDER BY 'COL_DATE' DESC";
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (c.moveToFirst()) {
do {
Record record = new Record();
record.setId(c.getInt(c.getColumnIndex(COL_ID)));
record.setAccountType(c.getString(c.getColumnIndex(COL_ACCOUNT_TYPE)));
record.setDescription(c.getString(c.getColumnIndex(COL_DESCRIPTION)));
record.setExpenseSource(c.getString(c.getColumnIndex(COL_EXPENSES_SOURCE)));
record.setExpenseAmount(c.getString(c.getColumnIndex(COL_EXPENSES_AMOUNT)));
record.setIncomeSource(c.getString(c.getColumnIndex(COL_INCOME_SOURCE)));
record.setIncomeAmount(c.getString(c.getColumnIndex(COL_INCOME_AMOUNT)));
record.setDate(c.getString(c.getColumnIndex(COL_DATE)));
all_Records.add(record);
} while (c.moveToNext());
c.close();
}
return all_Records;
这是您的查询:
"SELECT * FROM " + TABLE_HISTORY +" ORDER BY 'COL_DATE' DESC"
列的名称用单引号括起来:这会将其转换为文字字符串。因此,所有行都获得相同的文本值'COL\u DATE'
作为排序条件,这使得排序顺序未定义
只需删除单引号并使用变量的值,以便SQLite识别它是一个列名:
"SELECT * FROM " + TABLE_HISTORY +" ORDER BY " + COL_DATE + " DESC"
COL\u DATE
是一个包含列名称的变量,但可以将其用作字符串文字。改为:
String selectQuery = "SELECT * FROM " + TABLE_HISTORY +" ORDER BY " + COL_DATE + " DESC";
您好,我已经根据您的建议更改了查询,但它仍然不符合顺序。dd/mm/yy使用日历从日期选择器输入这是一种不可比较的格式,因此您得到的顺序是字母顺序。在SQLite表中应仅使用yyyy-mm-dd。在应用程序中,您可以使用任何格式,但在将日期保存到数据库时,必须将其更改为yyyy-mm-dd。对不起,如何更改它以实现此目的?
"SELECT * FROM " + TABLE_HISTORY +" ORDER BY " + COL_DATE + " DESC"
String selectQuery = "SELECT * FROM " + TABLE_HISTORY +" ORDER BY " + COL_DATE + " DESC";