这让我感到困惑!我正在尝试从数据库中的列返回最大值,但返回值始终是列的名称。
我使用的查询:
private static final String SELECTMAX = "SELECT MAX(?) FROM " + TABLE_NAME ;
(测试)函数返回最大值:
public int getMaxValue(String field){
int r = 0;
String f[] = new String[] {field};
Cursor c = this.db.rawQuery(SELECTMAX, f);
if (c.moveToFirst()) {
String s = c.getString(0);
Log.i("XXXXX","Max num: " + s);
}
return r;
}
我要查询的列是INTEGER类型,但结果's'始终是列名而不是所需的值。
由于
答案 0 :(得分:4)
我对sqllite没有多少经验,是吗?准备好的陈述的参数?如果是这样,您似乎选择了列名称的字符串表示的最大值,则不应将列名称作为参数传递。
所以你的查询应该是这样的。
SELECT MAX(s) FROM " + TABLE_NAME;
您正在有效执行
SELECT MAX('s') FROM " + TABLE_NAME;
答案 1 :(得分:1)
你应该使用Android SDK中已经存在的DatabaseUtils .stringForQuery()静态方法来轻松检索一个值,这个例子适用于String
bot,还有{{1}的方法}}
Long
在db上运行查询并返回第一行第一列中的值的实用程序方法。
像
这样的东西stringForQuery(SQLiteDatabase db, String query, String[] selectionArgs)