Android 带有where子句的sqlite不起作用

Android 带有where子句的sqlite不起作用,android,sqlite,Android,Sqlite,下面是我的代码片段。 我的查询确实返回一个值,但我不知道如何提取该值。 showtoast(ID)不显示任何内容。请帮忙 try { String ID = null; mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE, null); Cursor allrows = mydb.rawQuery( "SELECT REGID FROM " + TABLE + " where NAME = '"

下面是我的代码片段。 我的查询确实返回一个值,但我不知道如何提取该值。
showtoast(ID)
不显示任何内容。请帮忙

try {
    String ID = null;
    mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE, null);
    Cursor allrows = mydb.rawQuery(
        "SELECT REGID FROM " + TABLE + " where NAME = '" + name_from_spinner + "'" ,
        null
    );

    if (allrows.moveToFirst()) {
        showToast("not empty");
        ID = allrows.getString(0);
        showToast(ID);
    } else {
        showToast("empty");
    }

    allrows.close();
    mydb.close();
} catch (Exception e) {
    Toast.makeText(
        getApplicationContext(),
        "Error encountered.",
        Toast.LENGTH_LONG
    );
}

您永远不会从
rawQuery
获得空光标。而是使用
moveToFirst

if (allrows.moveToFirst()) {
    showToast("not empty");
    ID = allrows.getString(0);
    showToast(ID);
}
另外,因为您只选择了1列,所以您知道它的索引将是0

如果希望接收多个列,可以按如下方式循环光标:

if (allrows.getCount() == 0) {
    showToast("empty");
} else {
    while (allrows.moveToNext()) {
        ID = allrows.getString(0);
        showToast(ID);
    }
}

阅读有关如何从cursori读取值的文档。我的代码没有输入if语句,我使用else语句只是为了查看我的代码是否输入if块,它没有。我的else块已执行。请告诉我可能是什么原因problem@nainasony这意味着没有找到行。