Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.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
Java 返回空字符串的函数_Java_Android_Sqlite - Fatal编程技术网

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