¿Cómo ordeno mi base de datos SQLITE en orden descendente, para una aplicación de Android?

¿Cuál es el método más eficiente para mostrar mis datos en orden descendente?

public String getRank() { String[] rank = new String[]{ KEY_ROWID }; Cursor c = scoreDb.query(DATABASE_TABLE, rank, null, null, null, null, null); //reading information from db. String rankResult = ""; int iRow = c.getColumnIndex(KEY_ROWID); //Cursor looking for column setting equal to these ints. for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { //Move to first row - where cursor starts and moves to next row as long it is not after last row. rankResult = rankResult + c.getString(iRow) + "\n"; //Returning value of row that it is currently on. } return rankResult; //returning result } public String getName() { String[] name = new String[]{ KEY_NAME }; Cursor c = scoreDb.query(DATABASE_TABLE, name, null, null, null, null, null); //reading information from db. String nameResult = ""; int iRow1 = c.getColumnIndex(KEY_NAME); //Cursor looking for column setting equal to these ints. for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { //Move to first row - where cursor starts and moves to next row as long it is not after last row. nameResult = nameResult + c.getString(iRow1) + "\n"; //Returning value of row that it is currently on. } return nameResult; //returning result } public String getScore() { String[] score = new String[]{ KEY_SCORE }; Cursor c = scoreDb.query(DATABASE_TABLE, score, null, null, null,null, null); //reading information from db. String scoreResult = ""; int iRow2 = c.getColumnIndex(KEY_SCORE); //Cursor looking for column setting equal to these ints. for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { //Move to first row - where cursor starts and moves to next row as long it is not after last row. scoreResult = scoreResult + c.getString(iRow2) + "\n"; //Returning value of row that it is currently on. } return scoreResult; //returning result } 

Query tiene dos syntax, la syntax que está utilizando, la última columna representa orderBy, solo necesita especificar en qué columna desea hacer orderBy + “ASC” (o) orderBy + “DESC”

 Cursor c = scoreDb.query(DATABASE_TABLE, rank, null, null, null, null, yourColumn+" DESC"); 

Consulte esta documentación para comprender más sobre el método query() .

 Cursor c = scoreDb.query(Table_Name, score, null, null, null, null, Column+" DESC"); 

Prueba esto

 return database.rawQuery("SELECT * FROM " + DbHandler.TABLE_ORDER_DETAIL + " ORDER BY "+DbHandler.KEY_ORDER_CREATED_AT + " DESC" , new String[] {}); 

De acuerdo con los documentos :

 public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit); 

y su PEDIDO POR param significa:

Cómo ordenar las filas, formateadas como una cláusula ORDER BY de SQL (excluyendo ORDER BY). Pasar nulo utilizará el orden de clasificación predeterminado, que puede estar desordenado.

Por lo tanto, su consulta será:

  Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, KEY_ITEM + " DESC", null); 
 public List getExpensesList(){ SQLiteDatabase db = this.getWritableDatabase(); List expenses_list = new ArrayList(); String selectQuery = "SELECT * FROM " + TABLE_NAME ; Cursor cursor = db.rawQuery(selectQuery, null); try{ if (cursor.moveToLast()) { do{ String info = cursor.getString(cursor.getColumnIndex(KEY_DESCRIPTION)); expenses_list.add(info); }while (cursor.moveToPrevious()); } }finally{ cursor.close(); } return expenses_list; } 

Esta es mi forma de leer el registro de la base de datos para ver la lista en orden descendente. Mueva el cursor al último y vaya al registro anterior después de buscar cada registro. Espero que esto ayude ~

 Cursor c = myDB.rawQuery("SELECT distinct p_name,p_price FROM products order by Id desc",new String[]{}); 

esto funciona para mi !!!

puedes hacerlo con esto

 Cursor cursor = database.query( TABLE_NAME, YOUR_COLUMNS, null, null, null, null, COLUMN_INTEREST+" DESC"); 

La cláusula ORDER BY de SQLite se usa para ordenar los datos en orden ascendente o descendente, en función de una o más columnas. Cursor c = scoreDb.query (DATABASE_TABLE, rank, null, null, null, null, yourColumn + “DESC”);

 SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query( TABLE_NAME, rank, null, null, null, null, COLUMN + " DESC", null); 

Tenemos una opción más para hacer el pedido por

 public Cursor getlistbyrank(String rank) { try { //This can be used return db.`query("tablename", null, null, null, null, null, rank +"DESC",null ); OR return db.rawQuery("SELECT * FROM table order by rank", null); } catch (SQLException sqle) { Log.e("Exception on query:-", "" + sqle.getMessage()); return null; } } 

Puedes usar estos dos métodos para ordenar

Sobre el método eficiente. Puede usar CursorLoader. Por ejemplo, incluí mi acción. Y debe implementar ContentProvider para su base de datos. https://developer.android.com/reference/android/content/ContentProvider.html

Si implementa esto, lo llamará a su base de datos muy eficiente.

 public class LoadEntitiesActionImp implements LoaderManager.LoaderCallbacks { public interface OnLoadEntities { void onSuccessLoadEntities(List entitiesList); } private OnLoadEntities onLoadEntities; private final Context context; private final LoaderManager loaderManager; public LoadEntitiesActionImp(Context context, LoaderManager loaderManager) { this.context = context; this.loaderManager = loaderManager; } public void setCallback(OnLoadEntities onLoadEntities) { this.onLoadEntities = onLoadEntities; } public void loadEntities() { loaderManager.initLoader(LOADER_ID, null, this); } @Override public Loader onCreateLoader(int id, Bundle args) { return new CursorLoader(context, YOUR_URI, null, YOUR_SELECTION, YOUR_ARGUMENTS_FOR_SELECTION, YOUR_SORT_ORDER); } @Override public void onLoadFinished(Loader loader, Cursor cursor) { } @Override public void onLoaderReset(Loader loader) { } 

Esto es algo terrible! Me cuesta algunas horas! esta es mi tabla de filas:

 private String USER_ID = "user_id"; private String REMEMBER_UN = "remember_un"; private String REMEMBER_PWD = "remember_pwd"; private String HEAD_URL = "head_url"; private String USER_NAME = "user_name"; private String USER_PPU = "user_ppu"; private String CURRENT_TIME = "current_time"; Cursor c = db.rawQuery("SELECT * FROM " + TABLE +" ORDER BY " + CURRENT_TIME + " DESC",null);