SQlite MAX查询有时返回空

时间:2014-07-25 15:44:21

标签: android mysql ios sql sqlite

我想在列中获取最大值。很多次我能够获得最大值。但很少有人没有回来

下面是使用日志执行的两个示例,其中我什么也没得到和值

无人

-log- query =从产品WHERE price =?

中选择MAX(id)

-log- ar​​gs count = 1

-log- ar​​gs [0] = 31

cursor=db.rawQuery(query, args);

-log- cursor.getCount()= 1

if(cursor.moveToFirst())    

-log-将光标移动到第一行成功

-log- cursor.getString(0)=

-log- cursor.getType(0)= 3

-log- cursor.getColumnName(0)= MAX(id)

获取价值

-log-query =从产品WHERE price =?

中选择MAX(id)

-log- ar​​gs count = 1

-log- ar​​gs [0] = 31

Cursor cursor=db.rawQuery(query, args);

-log- cursor.getCount()= 1

if(cursor.moveToFirst())    

-log-将光标移动到第一行成功

-log- cursor.getString(0)= 3

-log- cursor.getType(0)= 1

-log- cursor.getColumnName(0)= MAX(id)

2 个答案:

答案 0 :(得分:0)

使用pricevalue添加单引号,因为price是字符串的类型,因此请将您的查询用作

select MAX(id) from product WHERE price = "'" + pricevalue + "'";

但推荐的解决方案是使用query代替rawQuery

cursor = db.query("product", new String [] {"MAX(id)"}, "price=?",
            new String[] { pricevalue }, null, null, null);

注意: pricevalue 将是价格的价值。

答案 1 :(得分:0)

我怀疑问题是浮点转换问题。尝试将where子句表达为:

where abs((price + 0) - pricevalue) < 0.005

您可能还会遇到价格问题,例如'$5.00',但pricevalue'5'。仅仅引用字符串无济于事。