2012-03-21 12 views
0

sqlite androidにクエリを作成して、特定のユーザー名のユーザー数を表に表示させようとしています。 これは私の機能です。私は "getContentResolver()!= null"と指定しなければならないので、変数名です。バインドまたは列のインデックスが範囲外にあり、sqlite android tableを照会しています。エラー

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引数に1つの値を持つ1つのカラムがあります。 私はこれのいくつかの理由を助けてください、ありがとう。

答えて

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使用したい場合は、あなたがアイテムwhereArgs

whereArgsを持っているようwhere?の同じ量を持っている必要がありますが、中に?を交換します最終データベースクエリ

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

問い合わせのためにname = 'Peter' OR name = 'Jim'にお寄せください。ところで

:ないcatch(NullPointerException e)ん - 彼らは私が理解

+1

が起こることはできませんので、あなたに感謝し、あなたのコードを安全に。できます –

関連する問題