2012-01-31 12 views
5

Molto semplice compito sembrerebbe, cercando di ottenere un determinato intervallo di record/righe nel mio SQLite db in applicazione Android con il seguente:Android SQLite "tra" non compreso o restituisce tutti i record

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

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

Con la selezione precedenteArgs Sto ottenendo solo le due righe, riga 1 e 10. Se cambio argomento a qualcos'altro, sto ricevendo tutto il lotto (intero set di record/righe) come se non ci fosse alcuna condizione. Sono stato sbattendo la testa per un giorno perché questo funziona come fa, forse c'è qualcosa di speciale da sapere sull'uso di "tra" in SQLite? Qualsiasi commento/aiuto molto apprezzato.

risposta

0

Sembra problema da parte vostra che ho controllato e funziona benissimo,

Metodo

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

Attuazione

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

uscita

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

Vorrei ma è necessario restituire Cursore dalla mia query per compilare un elenco. E sì, ho anche provato e usato la query SQLiteDatabase ei metodi rawQuery, entrambi con gli stessi esatti risultati della mia domanda originale. – fissk

+0

Funziona bene come ho controllato. –

+0

oh uomo .. questo lo rende ancora più misterioso .. Ho provato a verificare effettivamente quanti risultati il ​​mio cursore ritorna, sperando ci fosse qualche errore nel modo in cui visualizza i risultati, ma conferma il mio risultato iniziale. Non ho idea di che cosa stia succedendo .. usando esattamente il codice che hai sopra .. – fissk

1

È possibile utilizzare questo codice.

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)); 
} 
Problemi correlati