1

アンドロイド初心者です。データベース全体を検索して、「着信」番号がデータベースにあるかどうかを調べようとしています。存在する場合はtrueを返し、そうでない場合はfalseを返します。

検索用の私のコードは以下に含まれていますが、データベースに存在しない番号で呼び出しても常に true を返します。

さらに、着信番号が都市のコード内にある場合があるため、検索に LIKE を使用する必要があります

事前に感謝し、英語の使用が不十分であることをお詫びします

 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 に答える