SQLITE原始查询结果与aSQLiteManager中的结果不同

时间:2012-11-01 06:46:28

标签: android sqlite date sql-order-by

我在SQLitemanager(SQL DB App for Android)中进行了以下查询:

SELECT * FROM fahrer, fahrzeuge, nutzungsarten, fahrtenbuch WHERE fahrtenbuch.nutzungsart_id = nutzungsarten._id AND fahrtenbuch.fahrzeuge_id = fahrzeuge._id AND fahrtenbuch.fahrer_id = fahrer._id ORDER BY SUBSTR(fahrtenbuch.startdatum,7,4), SUBSTR(fahrtenbuch.startdatum,4,2), SUBSTR(fahrtenbuch.startdatum,1,2) ASC

返回的订单符合预期。日期按 dd.mm.yyyy 正确排序。

但是当我在 DB-Helper类中执行查询时,顺序并不相同。 在DB-Helper类中:

final String MY_QUERY = "SELECT * FROM fahrer, fahrzeuge, nutzungsarten, fahrtenbuch WHERE fahrtenbuch.nutzungsart_id = nutzungsarten._id AND fahrtenbuch.fahrzeuge_id = fahrzeuge._id AND fahrtenbuch.fahrer_id = fahrer._id ORDER BY SUBSTR(fahrtenbuch.startdatum,7,4), SUBSTR(fahrtenbuch.startdatum,4,2), SUBSTR(fahrtenbuch.startdatum,1,2) ASC";
return mDb.rawQuery(MY_QUERY, null);

在我的活动中:


Cursor curCSV = mDbHelper.fetchAllFahrtenbuchASC();
curCSV.moveToFirst();
while(curCSV.moveToNext()) 
{
   System.out.println("Date of entry: " +curCSV.getString(18));
} 

curCSV.close();

有谁知道为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

此代码:

curCSV.moveToFirst();
while(curCSV.moveToNext()) ...

跳过第一条记录。 改为使用:

if (curCSV.moveToFirst())
    do {
        ...
    } while (curCSV.moveToNext());