android
  • sqlite
  • 2012-07-27 52 views 2 likes 
    2

    数据库类如何从android中的光标检索对应于特定字段的数据?

    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; 
        } 
    } 
    

    是我得到的错误是可创建cursor.getInt(cursor.getColumnIndex("createable")); cursorindexoutofbounds虽然光标是有一些价值还是它给这个错误! thanx提前

    +0

    在取数据之前,您需要先移动光标到第一条记录。 – 2012-07-27 12:27:14

    回答

    0

    有了适当的光标闭合。

    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; 
    } 
    
    1

    不是:

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

    使用

    if (cursor.moveToFirst()) { 
         //Code here 
        } 
    

    这可能会解决你的问题。

    +1

    thanxxx它的工作 – 2012-07-27 12:22:53

    +0

    如果它解决了你的问题,你应该接受这个答案:) – 2012-07-27 12:28:58

    1
    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; 
    } 
    

    }

    相关问题