2012-01-31 17 views
5

muy simple tarea al parecer, tratando de conseguir un determinado rango de registros/filas en mi db SQLite en la aplicación para Android con lo siguiente:Android SQLite "entre" no incluido o devuelve todos los registros

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

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

Con la selección anterior Args Obtengo solo las dos filas, fila 1 y 10. Si cambio arg a cualquier otra cosa, obtengo el lote completo (conjunto completo de registros/filas) como si no hubiera una condición. He estado golpeando mi cabeza por un día, ¿por qué esto funciona de la manera en que lo hace, tal vez hay algo especial que saber sobre el uso de "entre" en SQLite? Cualquier comentario/ayuda muy apreciada.

Respuesta

0

Parece un problema de su lado he comprobado y funciona bien,

Método

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

Implementación

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

salida

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

Necesitaría devolver Cursor de mi consulta para completar una lista. Y sí, también probé y utilicé los métodos queryQuest y rawQuery de SQLiteDatabase, ambos con los mismos resultados precisos que en mi pregunta original. – fissk

+0

Funciona bien cuando lo revisé. –

+0

oh hombre ... esto solo lo hace aún más misterioso ... Intenté comprobar realmente cuántos resultados devuelve mi cursor, esperando que haya algún error en la forma en que muestra los resultados, pero confirma mi resultado inicial. No tengo ni idea de por qué está sucediendo ... usando precisamente el código que tienes arriba ... – fissk

1

Puede usar este código.

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)); 
} 
Cuestiones relacionadas