我尝试使用SQLite的MAX()函数通过自定义ContentProvider的查询方法获取列的Max值,但是当我运行应用程序时崩溃,给我当前错误:
06-20 17:30:33.868 30109-30109 /? E / AndroidRuntime:致命异常:主要 处理:com.bpl.spart.bloodpressurelogbook,PID:30109 android.database.sqlite.SQLiteException:滥用聚合函数MAX()(代码1):,同时编译:SELECT _id,sistolica,diastolica,pulso FROM TablaTomasDePresion WHERE MAX(sistolica) 在android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法) 在android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887) 在android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498) 在android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 在android.database.sqlite.SQLiteProgram。(SQLiteProgram.java:58) 在android.database.sqlite.SQLiteQuery。(SQLiteQuery.java:37) 在android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 在android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316) 在android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1163) 在android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1034) 在android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1202) 在db.TomasProvider.query(TomasProvider.java:48) 在android.content.ContentProvider.query(ContentProvider.java:1017) 在android.content.ContentProvider $ Transport.query(ContentProvider.java:238) 在android.content.ContentResolver.query(ContentResolver.java:491) 在android.content.ContentResolver.query(ContentResolver.java:434) 在com.bpl.spart.bloodpressurelogbook.pestanaGraficos $ 1.onItemSelected(pestanaGraficos.java:95) 在android.widget.AdapterView.fireOnSelected(AdapterView.java:931) 在android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:920) 在android.widget.AdapterView.-wrap1(AdapterView.java) 在android.widget.AdapterView $ SelectionNotifier.run(AdapterView.java:890) 在android.os.Handler.handleCallback(Handler.java:746) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:148) 在android.app.ActivityThread.main(ActivityThread.java:5459) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:728) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
这是我调用方法的代码:
final String[] projection = {Contrato.Columnas._ID,Contrato.Columnas.SISTOLICA,Contrato.Columnas.DIASTOLICA,Contrato.Columnas.PULSO};
final String select = "MAX(" + Contrato.Columnas.SISTOLICA + ")";
Cursor c = resolver.query(Contrato.URI_CONTENIDO_BASE,projection,select,null,null);
if(c.moveToNext()){
String sisq = c.getString(c.getColumnIndex(Contrato.Columnas.SISTOLICA));
sistolicaMAQ.setText(sisq);
String diaq = c.getString(c.getColumnIndex(Contrato.Columnas.DIASTOLICA));
diastolicaMAQ.setText(diaq);
String pulq = c.getString(c.getColumnIndex(Contrato.Columnas.PULSO));
pulsoMAQ.setText(pulq);
}
所以,问题是如何纠正这个错误?