Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 降序SQLite整数而不是字符串_Android_Database_Sqlite_Cursor - Fatal编程技术网

Android 降序SQLite整数而不是字符串

Android 降序SQLite整数而不是字符串,android,database,sqlite,cursor,Android,Database,Sqlite,Cursor,我已经设法让我的SQLite数据库按分数列降序显示,但问题是我认为它将该列识别为字符串而不是int,因为它是按以下顺序出现的: 7,6,4,2,1,19 我不知道如何改变它,即使我确信它很简单。以下是我当前的代码: 公共类CodeBreakerDB{ public static final String KEY_ROWID=“_id”;//引用数据库中的特定行。 公共静态最终字符串键\u NAME=“player\u NAME”; 公共静态最终字符串KEY\u SCORE=“player\u S

我已经设法让我的SQLite数据库按分数列降序显示,但问题是我认为它将该列识别为字符串而不是int,因为它是按以下顺序出现的:

7,6,4,2,1,19

我不知道如何改变它,即使我确信它很简单。以下是我当前的代码:

公共类CodeBreakerDB{
public static final String KEY_ROWID=“_id”;//引用数据库中的特定行。
公共静态最终字符串键\u NAME=“player\u NAME”;
公共静态最终字符串KEY\u SCORE=“player\u SCORE”;
私有静态最终字符串数据库\u NAME=“PlayerScoresdb”//标记数据库
私有静态最终字符串数据库\u TABLE=“playerTable”//标记表
私有静态最终int数据库_VERSION=1;
私人助理;
私人最终语境;
专用sqlitedb数据库;
//databaseHelper可帮助设置数据库
私有静态类DbHelper扩展了SQLiteOpenHelper{
公共DbHelper(上下文){
super(上下文、数据库名称、null、数据库版本);
}
@凌驾
public void onCreate(SQLiteDatabase db){//方法仅在第一次使用时被调用以生成数据库。
db.execSQL(“创建表”+数据库表+”(“+
KEY_ROWID+“整数主键自动递增,”+
KEY_NAME+“文本不为空,”+
键_得分+“整数”);”;
}
@凌驾
public void onUpgrade(SQLiteDatabase db,intoldversion,intnewversion){//首次使用后调用的方法
db.execSQL(“如果存在删除表”+数据库_表);
onCreate(db);
}
}
公共代码断路器B(上下文c){
scoreContext=c;
}
public CodeBreakerDB open()引发SQLException{
scoreHelper=new DbHelper(scoreContext);//获取为数据库设置的方面,包括名称和版本。
scoreDb=scoreHelper.getWritableDatabase();//通过scoreHelper打开数据库。
归还这个;
}
公众假期结束(){
scoreHelper.close();//关闭scoreHelper类。
}
public long createScoreEntry(字符串名称、字符串分数){//写入实际数据库。
ContentValues cv=新的ContentValues();
简历(姓名、钥匙);
cv.put(关键分数,分数);
返回scoreDb.insert(数据库表,null,cv);
}
公共字符串getRank(){
字符串[]秩=新字符串[]{KEY_ROWID};
游标c=scoreDb.query(数据库表,秩,null,null,null,KEY_SCORE+“DESC”);
字符串rankResult=“”;
int iRow2=c.getColumnIndex(KEY_ROWID);//游标查找与这些int相等的列设置。
对于(c.moveToFirst();!c.isAfterLast();c.moveToNext()){
//移动到第一行-光标开始并移动到下一行,只要它不在最后一行之后。
rankResult=rankResult+c.getString(iRow2)+“\n”;
//返回当前所在行的值。
}
return rankResult;//返回结果
}
公共字符串getName(){
字符串[]名称=新字符串[]{KEY_name};
Cursor c=scoreDb.query(DATABASE_TABLE,name,null,null,null,KEY_SCORE+“DESC”);//从数据库读取信息。
字符串namesult=“”;
int iRow1=c.getColumnIndex(KEY_NAME);//游标查找与这些int相等的列设置。
对于(c.moveToFirst();!c.isAfterLast();c.moveToNext()){
//移动到第一行-光标开始并移动到下一行,只要它不在最后一行之后。
nameResult=nameResult+c.getString(iRow1)+“\n”;
//返回当前所在行的值。
}
return namesult;//返回结果
}
公共字符串getScore(){
字符串[]分数=新字符串[]{KEY_score};
游标c=scoreDb.query(数据库表,分数,null,null,null,KEY_分数+“DESC”);
字符串scoresult=“”;
int iRow2=c.getColumnIndex(KEY_SCORE);//游标查找与这些int相等的列设置。
对于(c.moveToFirst();!c.isAfterLast();c.moveToNext()){
//移动到第一行-光标开始并移动到下一行,只要它不在最后一行之后。
scoreResult=scoreResult+c.getString(iRow2)+“\n”;
//返回当前所在行的值。
}
return scoresult;//返回结果
}
} 
你把关键的分数作为字符串。请注意,
score
类型是String

也许你应该用这个

cv.put(KEY_SCORE, Integer.parseint(score));
编辑:

还要更改提取值的代码。i、 e

 rankResult = rankResult + c.getString(iRow2) + "\n"; 


同时放下你的桌子,重新创建它

这是我唯一需要更改的代码部分吗?当我尝试它时,它使应用程序在模拟器中崩溃。很抱歉,我现在没有互联网!我试图更改编辑的部分,但在.toString位上出现错误,表示它不适用于参数(字符串)。。
 rankResult = rankResult + c.getString(iRow2) + "\n"; 
rankResult = rankResult + Integer.toString(c.getInt(iRow2)) + "\n";