una studio rawquery mostrar hacer datos consultas consultar android sqlite

studio - Consultar el valor máximo de una columna en SQLite para Android



rawquery sqlite android (6)

Otra forma de obtener la columna podría ser establecer la consulta al máximo de una columna en particular, por ejemplo:

db.query(DATABASE_TABLE, null, "price=(SELECT MAX(price))", null, null, null, null)

El cursor que devuelve será la fila de precio más alto en la base de datos.

Tengo una base de datos creada y archivada con datos. Hay una columna donde quiero encontrar el mayor valor.

Este es el método utilizado en mi adaptador de base de datos:

public Cursor getBiggestInTheColumn() { return db.query(DATABASE_TABLE, null, "MAX(price)", null, null, null, null); }

Debería funcionar pero cuando llamo al método:

cursor = dbadp.getBiggestInTheColumn();

Recibo un error de tiempo de ejecución como este (LogCat):

07-14 12: 38: 51.852: ERROR / AndroidRuntime (276): Causado por: android.database.sqlite.SQLiteException: uso incorrecto de la función agregada MAX ():, mientras se compila: SELECCIONA * DE los gastos CUANDO MÁXIMO (precio)

¿Algunas ideas? Sospecho que esto se debe a la mala consulta, pero es lo mejor que se me ocurre. Otras consultas están funcionando bien.


Si desea obtener el valor máximo de una columna en una TABLA, puede usar este método

public String getMax( String TABLE_NAME, String column_name) {// use the data type of the column database.open(); Cursor cursor = database.query(TABLE_NAME, new String[]{"MAX(" +column_name + ") AS MAX"}, null, null, null, null, null); cursor.moveToFirst(); // to move the cursor to first record int index = cursor.getColumnIndex("MAX"); String data = cursor.getString(index);// use the data type of the column or use String itself you can parse it database.close(); return data; }

Si desea obtener un registro completo que contenga el valor máximo para la columna

public List<Object> getMaxRecord(String TABLE_NAME, String column_name) { database.open(); Cursor cursor = database.query(TABLE_NAME, new String[]{"*"}, column_name + " = " + "(SELECT MAX(" + column_name + ") FROM " + TABLE_NAME + ")", null, null, null, null); List<Object> demos = cursorToModel(cursor); database.close(); return demos; }

nota: cursorToModel es un método para obtener una lista de registros en el cursor satisfaciendo la restricción


Si solo desea el mayor valor, entonces desea el equivalente de SQL de: SELECT MAX(price) FROM spendings .

db.rawQuery(String sql, String[] selectionArgs) a usar db.rawQuery(String sql, String[] selectionArgs) , por lo que sería: db.rawQuery("SELECT MAX(price) FROM spendings", null) .

Pero creo que podrías hacer esto con db.query(DATABASE_TABLE, new String [] {"MAX(price)"}, null, null, null, null, null); . Aunque no he probado eso.


Tengo el mismo problema en Android. Y `db.rawQuery (String sql, String [] selectionArgs), por lo que sería: db.rawQuery (" SELECT MAX (precio) DE los gastos ", nulo) - lanzar Excepción .

Lo arreglé por:

db.query(DATABASE_TABLE, null, "price=(SELECT MAX(price) FROM + DATABASE_TABLE + ")", null, null, null, null)

El cursor que devuelve será la fila de precio más alto en la base de datos. Funciona correctamente.


por favor escriba la consulta como select max(price) as price from table name .

el cursor resultante sigue la siguiente declaración

cursor.getString(cursor.getColumnIndex("price"));


public Cursor select(String sql) { try { Cursor cursor = mDataBase.rawQuery(sql,null); return cursor; } catch (SQLException mSQLException) { throw mSQLException; } } and

llámalo como

Cursor cursor = dal.select("SELECT Max(id) FROM terms"); //where en like ''"+name+"%''"); if (cursor != null) { cursor.moveToFirst(); int id= cursor.getInt(0);}