2012-03-21 77 views
0

我想查詢sqlite android來查看例如給定用戶名有多少用戶存在於表中。 這是我的功能。我必須指定「getContentResolver()!= null」,變量名也是如此。綁定或列索引超出範圍,查詢sqlite android表錯誤

private int findSelectedUser(String name) { 
     int count = 0; 

     try { 
      String[] whereArgs = new String[] {name}; 
      String[] PROJECTION = new String[] { MyProvider.SETTINGS_USERNAME }; 
      Cursor c = getContentResolver().query(MyProvider.SETTINGS_URI, 
        PROJECTION, MyProvider.SETTINGS_USERNAME , whereArgs, null); 
      if (c != null) { 
       count = c.getCount(); 
       c.close(); 
      } 
     } catch (NullPointerException e) { 

     } 
     System.out.println("Found something? " + count); 
     return count; 
    } 

而且運行後,我收到來自主題的錯誤...並沒有得到它。在我的where子句中,我有一列,在我的where參數中有一個值。 請幫我對此做一些瞭解,謝謝。

回答

9

我想這工作:

String[] whereArgs = new String[] {name}; 
String[] PROJECTION = new String[] { MyProvider.SETTINGS_USERNAME }; 
Cursor c = getContentResolver().query(MyProvider.SETTINGS_URI, 
     PROJECTION, MyProvider.SETTINGS_USERNAME + "=?" , whereArgs, null); 
if (c != null) { 
    count = c.getCount(); 
    c.close(); 
} 

如果你想使用whereArgs你必須有中?相同數量的where你有項目whereArgs

whereArgs將替換的?最終數據庫查詢

String where = "name = ? OR name = ?"; 
String[] whereArgs = new String[] { 
    "Peter", 
    "Jim" 
}; 

that re爲name = 'Peter' OR name = 'Jim'查詢。

順便說一句:不要catch(NullPointerException e) - 使你的代碼的安全,這樣他們就不可能發生

+1

我明白了,謝謝你。有用 – 2012-03-21 07:55:24

相關問題