2013-02-20 27 views
-1

我想象不到为什么我的分数没有下降。这是仅排序的第一位数字。帮助我们分析这些代码,并告诉我什么是错误的答案。仅第一位数字降序

public String getData() {  
    Cursor c= ourDatabase.query(DATABASE_TABLE, new String[] {KEY_NAME, KEY_SCORE}, 
null, null, null, null, KEY_SCORE +" DESC"); 
    String result = ""; 


int iname = c.getColumnIndex(KEY_NAME); 
int iscore = c.getColumnIndex(KEY_SCORE); 

for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
    result = result + c.getString(iname) + " "+ c.getInt(iscore)+ "\n"; 

} 

return result; 

} 

回答

1

问题可能是KEY_SCORE被存储为字符串而不是数字。

有多种方法可以解决这个问题。投的成绩为整数或浮点数:

cast(Key_Score as float) desc 

或者,如果它是一个整数,没有前导零,下面的技巧的工作原理:

len(Key_Score) desc, key_score desc 

然而,在某些数据库中,len()功能可能是拼写length()或别的东西。

+0

我在哪里把所有这些代码先生? – 2013-02-20 16:17:18

+0

@KrisMacapia。 。 。在这个问题上你有标签“sql”。这是SQL语法,所以你可以把它放在'order by'子句中查询的地方。可能它会在'KEY_SCORE +“DESC”'所在的位置工作。 – 2013-02-20 16:19:05

+0

你能给我如使用此代码先生..即时通讯新手 – 2013-02-20 16:20:35