2012-12-09 67 views
1

我是一個Android初學者。我試圖搜索整個數據庫,並確定一個「傳入」數字是否在數據庫中,如果它存在返回true,如果不返回false,Sqlite和查詢

我的搜索代碼包含在下面,但它總是即使我用數據庫中不存在的數字調用它,也會返回true。

另外我應該使用LIKE用於搜索,因爲有時與呼入號碼是城市的例如內碼* * 172214866或0172214866,(incomingnumber的類型爲字符串)

由於事先與對不起,您的查詢 和你的字符串沒有其使用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; 
    } 
+0

嘗試使用moveToFirst()...謝謝 –

+0

謝謝老兄:) –

回答

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; 
} 
+0

感謝好友:) –

1

使用movetofirst()的