SELECT MAX(列)仅返回列名

时间:2010-07-16 10:19:20

标签: java android sqlite

这让我感到困惑!我正在尝试从数据库中的列返回最大值,但返回值始终是列的名称。

我使用的查询:

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'始终是列名而不是所需的值。

由于

2 个答案:

答案 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)