我是一个安卓初学者。我正在尝试搜索整个数据库并找出数据库中是否有"传入"数字,如果它确实存在,则返回 true(如果不返回 false),
我的搜索代码包含在下面,但是即使我使用数据库中不存在的数字调用它,它也始终返回 true。
此外,我是否应该使用 LIKE 进行搜索,因为有时传入的号码在城市代码内,例如 *0060*172214866 或 0172214866,.(传入号码的类型是字符串)
提前感谢,很抱歉英语使用不当
public boolean searchnumber(String incomiingnumber) {
boolean isit = false;
Cursor c=ourdatabase.query(DATABASE_TABLE, new String[]
{ROW_ID,KEY_NUMBER,N_NAME},
KEY_NUMBER + "=" + incomiingnumber
,null,null,null,null );
if (c != null){
while(c.moveToNext())
isit= true; }
else
{
isit=false;
Log.v(incomiingnumber, "IS NOT it");
}
return isit;
}
我建议使用like,然后使用您需要比较的最小序列。试试这个:
public boolean searchnumber(String incomiingnumber) {
String args[] = { "%" + incomingnumber + "%" };
Cursor c = ourdatabase.query(DATABASE_TABLE, new String[] { ROW_ID,
KEY_NUMBER, N_NAME }, KEY_NUMBER + " LIKE ?", args,
null, null, null);
if (c != null) {
c.moveToFirst();
try {
c.getString(1);
c.close();
return true;
} catch (CursorIndexOutOfBoundsException e) {
c.close();
return false;
}
}
return false;
}
查询
后使用 movetofirst()不,没有必要使用 Like 语句,它返回字符串的完全匹配