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