2012-11-01 39 views
0

我做出的SQLiteManager(SQL數據庫應用程序的Android)以下查詢:SQLITE原始查詢結果不一樣aSQLiteManager

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(); 

有誰知道這是爲什麼不工作?

+0

訂單會發生什麼變化? – Slartibartfast

回答

1

此代碼:

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

跳過第一個記錄。 改爲使用:

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

do/while組合沒有變化。 這個問題不僅是第一個入口。 看起來「ORDER BY」語句完全被忽略。 – venni

+0

哦,夥計。弄清楚了。由於一個函數的複製部分,導致我錯了。儘管如此,我也改變了我的循環到你的/做。 – venni