我正在尝试对sqlite android进行查询,以查看表中存在给定用户名的用户数量。 这是我的功能。我必须指定“getContentResolver()!= null”,因此是变量名。
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参数中有一个值。 请帮我看一下这个,谢谢。
答案 0 :(得分: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"
};
name = 'Peter' OR name = 'Jim'
会导致查询catch(NullPointerException e)
。
顺便说一下:不要{{1}} - 让您的代码安全无法发生