2012-11-09 74 views
0

小我想指望所有級別的項目數的SQLite查詢,它們是低級那麼當前的水平,你是在:比聲明

public int getAmountPrevLevels(int level) { 
     int count = 0; 

     Cursor c = myDataBase.rawQuery(
       "SELECT COUNT(*) FROM QUESTIONS WHERE LEVEL < " + level , null); 
     c.moveToFirst(); 
     count = c.getInt(0); 
     c.close(); 
     myDataBase.close(); 

     return count; 

    } 

它總是去OKE,直到我把10級的它有17個項目。假設我有10級每級30級和17級(隨機數)級別。即使我在級別5,它返回137(= 4 * 30 + 1 * 17)。我不知道爲什麼它總是採取級別十考慮以及...

+0

你說得對,我意識到剛纔我的標題是不正確的。它實際上不會返回錯誤,我的查詢只返回所有先前級別中錯誤的項目總數......它總是添加級別10的項目.. –

回答

2

我認爲數據類型的級別是TEXT(不是一個數字類型)因此10即將到來之前5

如果您的級別總是INTEGER那麼我建議您在可能的情況下更改表中的數據類型。

另外,我想你可以如下使用CASTING

SELECT COUNT(*) FROM QUESTIONS WHERE CAST(LEVEL AS INTEGER) < " + level 
+0

我在我的數據庫中看到它被分配爲'TEXT' 。這是否導致錯誤?似乎只是比較第一個數字,'1'而不是'10' –

+0

@MatthiasVanb它不僅比較'10'的'1',實際上在文本中'10'在'5'之前。嘗試簡單的測試排序,你會發現,例如'String [] myNums = {「1」,「5」,「10」,「4」}; \t \t Arrays.sort(myNums); \t \t System.out.println(Arrays.asList(myNums));' –

+0

@MatthiasVanb:我用'CASTING'更新了答案。請看看是否有幫助。 –