检查光标是否有结果

Faa*_*aas 6 sqlite android

我正在使用数据库来存储日期,并希望根据where claus中给出的id返回单个列.

    public String getPmax(String serial) {

    String[] columns = new String[]{KEY_SERIAL, KEY_PMAX};      
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, "serial = " + serial,
    null, null, null, null);

    String result = "nothing found";

    if(c != null) {

        int iPmax = c.getColumnIndex(KEY_PMAX); 

        c.moveToFirst();
        result = c.getString(iPmax);

    }

    return result;  

}
Run Code Online (Sandbox Code Playgroud)

如果我使用数据库中的序列,但当我使用不在数据库中的序列时,它会给我一个强制关闭,这个代码可以工作!

它说:

04-11 16:31:19.423: E/AndroidRuntime(21226): java.lang.RuntimeException: Unable to start activity ComponentInfo{nl.janjanus.solardetect/nl.janjanus.solardetect.DatabaseView}: android.database.sqlite.SQLiteException: no such column: g: , while compiling: SELECT serial, pmax FROM SolareCel WHERE serial = g
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:我如何检查是否有结果?或者我是否需要检查给定的序列是否是数据库中的序列?

Sam*_*iya 37

    if (!(mCursor.moveToFirst()) || mCursor.getCount() ==0){
     //cursor is empty
}
Run Code Online (Sandbox Code Playgroud)

  • 注意:这具有将光标设置到第一个位置的副作用.如果将已移动到特定位置的光标对象传递给另一个函数然后预期仍然在该位置,则可能会导致问题:) (2认同)