1

我是安卓初学者。我正在尝试搜索整个数据库并找出“传入”数字是否在数据库中,如果它确实存在,则返回 true,如果不返回 false,

我的搜索代码包含在下面,但是即使我使用数据库中不存在的数字调用它,它也总是返回 true。

另外我是否应该使用 LIKE 进行搜索,因为有时传入的号码在城市代码内,例如 * 0060 *172214866 或 0172214866,.(incomingnumber 的类型是 String )

在此先感谢您对英语使用不当感到抱歉

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

2 回答 2

1

在您的查询之后使用 movetofirst() 并且没有必要使用 Like 语句它返回您的字符串的完全匹配

于 2012-12-09T12:10:42.953 回答
1

我建议使用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;
}
于 2012-12-09T14:52:26.657 回答