Java 返回空字符串的函数
此函数持续返回一个空白字符串Java 返回空字符串的函数,java,android,sqlite,Java,Android,Sqlite,此函数持续返回一个空白字符串 public String getRandomWord() { int id = (int)(Math.random())*(numberOfRows())+1; SQLiteDatabase db = this.getReadableDatabase(); Cursor res = db.rawQuery( "select word from words where id="+id+"", null );
public String getRandomWord() {
int id = (int)(Math.random())*(numberOfRows())+1;
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select word from words where id="+id+"", null );
String s = "";
if (res.moveToFirst())
s = res.getString(res.getColumnIndex("word"));
res.close();
return s;
}
返回空白字符串的原因是
res.moveToFirst()
为false
(因此您的SQL查询结果为空)并且if块将永远不会运行,因此s
将始终保持其初始值“”
另一个原因可能是表达式为true
,但res.getString(res.getColumnIndex(“word”)
返回一个空字符串。如果需要随机行(word),请尝试使用:-
public String getRandomWord() {
int id = (int)(Math.random())*(numberOfRows())+1;
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select word from words where id="+id+"", null );
String s = "";
if (res.moveToFirst())
s = res.getString(res.getColumnIndex("word"));
res.close();
return s;
}
public String getRandomWord() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select word from words order by random() limit 1", null );
String s = "";
if (res.moveToFirst())
s = res.getString(res.getColumnIndex("word"));
res.close();
return s;
}
这确实假设表中有行,如果没有,则仍然会得到一个空白结果。如果确实是这样,则
res.moveToFirst()
为false
,这意味着结果为空。这是您可以/应该/必须/必须使用日志记录或调试器检查的内容。res.moveToFirst()
为false,或者res.getString
返回空白字符串。请检查声明id
的大括号!重新命名numberOfRows()
返回的id将始终为1!你想要的可能是intid=(int)(Math.random()*numberOfRows())+1代码>