Android 如果行id不存在,则返回字符串

Android 如果行id不存在,则返回字符串,android,sqlite,Android,Sqlite,在这里,我有一种方法可以根据表中的id_编号/编号来获取一个人的状态。如果人号存在,它将返回其状态,如挂起或接受 但是,它的编号不存在,它应该返回字符串NONE。该代码仅在数字存在时有效,但如果数字不存在,则返回ArrayIndexOutOfBounds 如何防止ArrayIndexOutOfBounds这样,如果数字不存在,它将返回字符串NONE public String getStatus(int number) { SQLiteDatabase db = this.get

在这里,我有一种方法可以根据表中的id_编号/编号来获取一个人的状态。如果人号存在,它将返回其状态,如
挂起
接受

但是,它的编号不存在,它应该返回字符串
NONE
。该代码仅在数字存在时有效,但如果数字不存在,则返回ArrayIndexOutOfBounds

如何防止
ArrayIndexOutOfBounds
这样,如果数字不存在,它将返回字符串
NONE

   public String getStatus(int number) {
     SQLiteDatabase db = this.getWritableDatabase();

     Cursor cursor = db.query(TABLE_NAME, new Sting[] {KEY_NUMBER,
              KEY_FULLNAME, KEY_STATUS}, KEY_NUMBER + "=?", 
               new String[] {String.valueOf(number)}, null, null, null, null);

         if(cursor != null) {
           cursor.moveToFirst();

           String status = cursor.getString(cursor.getColumnIndex("remark");
           return status;
         }
    }
我把这个方法叫做这样的东西

  String text =  db.getStatus(100); 
   if(text.equals(null){
      Log.e("Null: ", "null");
   } else
       Log.e("exist", "exist");

如果此数字不存在,它将崩溃,logcat显示
数组索引边界

您需要检查
光标
是否返回了任何行。您可以通过选中
cursor.getCount()>0来执行此操作,或者如果需要迭代
光标
,则可以执行以下操作:

while (cursor.moveToNext()){
  //Do your code
  return "Something";
}
return "NONE";
公共抽象布尔值moveToFirst()

在API级别1中添加,将光标移动到第一行

如果光标为空,此方法将返回false

返回移动是否成功

您没有使用

顺便说一句,返回null比显式字符串值“NONE”更好,因为与null的比较更快。您的代码应该随着时间的推移而更改

if(cursor != null && cursor.moveToFirst())
       String status = cursor.getString(cursor.getColumnIndex("remark");
       return status;
}
return null;