在Android中使用WHERE子句SQLite数据库?

在Android中使用WHERE子句SQLite数据库?,android,sqlite,Android,Sqlite,这是我的代码: public int getIdMotChuDe(String tenChuDe) { int IDChuDe = 0; try { Cursor c = null; c = database.rawQuery( "SELECT ChuDeID FROM DanhSachChuDe WHERE Te

这是我的代码:

    public int getIdMotChuDe(String tenChuDe) {
            int IDChuDe = 0;
            try
            {
                Cursor c = null;
                c = database.rawQuery(
                    "SELECT ChuDeID FROM DanhSachChuDe WHERE TenChuDe = ?"
                     , new String[] {tenChuDe});
                c.moveToFirst();
                IDChuDe = c.getInt(c.getColumnIndex("ChuDeID"));
                c.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            return IDChuDe;
        }
我试图从DanhSachChuDe表中获取ChuDeID,条件在WHERE子句中。但是我不知道为什么这个函数总是返回0。 请帮帮我。谢谢抱歉,因为我的英语不好。

这可能是因为正在引发异常。您正在使用的代码没有正确地检查光标的状态-它试图在检查对象是否为空之前移动到第一个

您的代码还假定始终返回结果。这是不好的做法,应该避免。更安全、更常见的解决方案如下:

if (cursor != null) {
    // If the cursor has results, move the cursor to first row
    if (cursor.moveToFirst()) {
        do {
            // YOUR METHODS HERE
            // then move to next row
        } while (cursor.moveToNext());
    }
}

在使用数据库的rawQuery之前,您是否在其他地方关闭了数据库?请检查LogCatDebug方法的内容,因为您已将其初始化为0,所以它将返回0。检查列名并确认数据库中有该列的值HI Kesh。一切都是正确的。但我不知道为什么它不起作用。rawQuery从不返回null。hello Ed。感谢rep。我正在尝试更改我的函数,请遵循您的代码。但它不起作用。您是否检查了日志以查看是否引发了异常?