Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQlite数据库未按日期排序_Java_Android_Sqlite_Android Sqlite - Fatal编程技术网

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";