在android中,如何从游标中检索特定字段对应的数据?

在android中,如何从游标中检索特定字段对应的数据?,android,sqlite,Android,Sqlite,数据库类 public boolean Permissions(String modulename) { int createable, updateable; Cursor cursor = db.rawQuery("select * from " + "moduleDesc" + " where " + "name" + "='" + modulename + "'", null); if (cursor.getCount() > 0);

数据库类

public boolean Permissions(String modulename) {
    int createable, updateable;
    Cursor cursor = db.rawQuery("select * from " + "moduleDesc" + " where "
            + "name" + "='" + modulename + "'", null);
    if (cursor.getCount() > 0);
        {
        createable = cursor.getInt(cursor.getColumnIndex("createable"));
        updateable = cursor.getInt(cursor.getColumnIndex("updateable"));
        cursor.close();
    }
    if ((createable == 1) && (updateable == 1)) {
        return true;

    } else {
        return false;
    }
}
我得到的错误是createable
cursor.getInt(cursor.getColumnIndex(“createable”))上的cursorindexoutofbounds
虽然游标有一些值,但它仍然会给出这个错误!!!thanx提前

而不是:

  if (cursor.getCount() > 0) { 
      //Code here
  }
使用

这可能会解决你的问题

Try this solution 

public boolean Permissions(String modulename) {
int createable, updateable;
Cursor cursor = db.rawQuery("select * from " + "moduleDesc" + " where "
        + "name" + "='" + modulename + "'", null);
if (cursor.getCount() > 0);
    {
    cursor.MoveToFirst();//use this if cursor count is 1 else use while loop 
    //while (cursor.MoveToNext){
    createable = cursor.getInt(cursor.getColumnIndex("createable"));
    updateable = cursor.getInt(cursor.getColumnIndex("updateable"));
    //}
    cursor.close();
}
if ((createable == 1) && (updateable == 1)) {
    return true;

} else {
    return false;
}

}

正确关闭光标

public boolean Permissions(String modulename) {
    Cursor cursor = db.rawQuery("select * from " + "moduleDesc" + " where "
            + "name" + "='" + modulename + "'", null);
    if (cursor != null) {
        try {
           if (cursor.moveToFirst()) {
               int createable = cursor.getInt(cursor.getColumnIndex("createable"));
               int updateable = cursor.getInt(cursor.getColumnIndex("updateable"));
               return (createable == 1) && (updateable == 1);
           }
        } finally {
            cursor.close();
        }
    }
   return false;
}

在获取数据之前,您需要首先将光标移动到第一条记录。
public boolean Permissions(String modulename) {
    Cursor cursor = db.rawQuery("select * from " + "moduleDesc" + " where "
            + "name" + "='" + modulename + "'", null);
    if (cursor != null) {
        try {
           if (cursor.moveToFirst()) {
               int createable = cursor.getInt(cursor.getColumnIndex("createable"));
               int updateable = cursor.getInt(cursor.getColumnIndex("updateable"));
               return (createable == 1) && (updateable == 1);
           }
        } finally {
            cursor.close();
        }
    }
   return false;
}