2012-01-31 57 views
5

非常簡單的任務這似乎試圖讓記錄/行給定的範圍在我的SQLite數據庫中的Android應用程序有以下:Android的SQLite的「之間」不包括或返回所有記錄

String[] projection = {"_id"}; 
String selection = "_id between ? and ?"; 
String[] selectionArgs = {"1", "10"}; 

queryBuilder.query(db, projection, selection, selectionArgs, null, null, null); 

隨着上面的selectionArgs我得到的只是兩行,第1行和第10行。如果我將arg更改爲其他任何內容,我會得到整個(整組記錄/行),就像沒有任何條件一樣。爲什麼這種方式的工作方式讓我頭痛不已呢,或許在SQLite中使用「之間」有一些特別的事情要知道?任何意見/幫助非常感謝。

回答

0

從你的身邊我檢查似乎問題並能正常工作,

方法

public Cursor GetBetween(String[] projection,String selection, String[] args){ 
     return db.query(TBL_NAME, projection, selection, args, null, null, null); 
    } 

實施

 String[] projection = new String[]{"_id"}; 
     String[] selectionArgs = new String[]{"1","3"}; 
     String selection = "_id between ? and ?"; 
     Cursor cursorGetBetween = helper.GetBetween(projection,selection, selectionArgs); 
     startManagingCursor(cursorGetBetween); 
     cursorGetBetween.moveToFirst(); 
     while(!cursorGetBetween.isAfterLast()){ 
      Log.d("value of cursorGetBetween", cursorGetBetween.getString(0)); 
      cursorGetBetween.moveToNext(); 
     } 

輸出

01-31 18:42:58.176: D/value of cursorGetBetween(647): 1 
01-31 18:42:58.176: D/value of cursorGetBetween(647): 2 
01-31 18:42:58.176: D/value of cursorGetBetween(647): 3 
+0

我會但需要返回從我的查詢光標填充列表。是的,我也嘗試過使用SQLiteDatabase的查詢和rawQuery方法,兩者的結果與我原來的問題相同。 – fissk 2012-01-31 13:11:59

+0

它正常工作,因爲我檢查它。 – 2012-01-31 13:25:28

+0

oh man ..這隻會讓它變得更加神祕......我試着去檢查我的光標返回的結果有多少,希望它顯示結果的方式有一些錯誤,但是它證實了我的初始結果。我不知道爲什麼會發生這種情況..使用上面的代碼.. – fissk 2012-01-31 13:38:25

1

您可以使用此代碼。

private SQLiteDatabase productDatabase; 
    public Cursor get_result(){ 
    Cursor c; 
    String sql = "SELECT * FROM " + tableName +"WHERE _id BETWEEN" + value1 +"AND" + value2; 
    c = productDatabase.rawQuery(sql, null); 
} 

Cursor cursor=get_result(); 
    if(cursor.moveToNext()){ 
    Log.d("count of product id="+cursor.getString(0)); 
}