Android 检查数据库中是否存在ID
我的数据库中有一个表,它由以下字段组成:id、group\u id、uri\u id、name、phone。 在我的DB管理器文件中,我有一个函数来检查组中是否存在uri\u id。这就是功能:Android 检查数据库中是否存在ID,android,sqlite,select,Android,Sqlite,Select,我的数据库中有一个表,它由以下字段组成:id、group\u id、uri\u id、name、phone。 在我的DB管理器文件中,我有一个函数来检查组中是否存在uri\u id。这就是功能: public boolean is_contact_in_group(String uri_id, int group_id) { SQLiteDatabase db = db_helper.getReadableDatabase(); Cursor mContactsCursor =
public boolean is_contact_in_group(String uri_id, int group_id)
{
SQLiteDatabase db = db_helper.getReadableDatabase();
Cursor mContactsCursor = db.query(Constants.TABLE_NAME_GROUP_CONTACTS, null,
"group_id="+group_id+"&contact_uri_id="+uri_id, null, null, null, null);
if(mContactsCursor.moveToFirst())
{
mContactsCursor.close();
db.close();
return true;
} else {
mContactsCursor.close();
db.close();
return false;
}
}
现在,在我的活动中,我只想记录输出:
private void add_new_contact(String uri_id, String name, String number)
{
int group_id = curr_group_id;
String contact_uri_id = uri_id;
String contact_name = name;
String contact_phone = number;
Log.i(DEBUG_TAG, "Is contact exist: "+manager.is_contact_in_group(contact_uri_id, group_id));
}
然而,每次我得到false
,即使有一个具有特定组id和uri id的记录
为什么会发生这种情况以及如何修复它?我想这是因为您的
WHERE
子句出错了
改变
"group_id="+group_id+"&contact_uri_id="+uri_id
到
试试这个
游标mContactsCursor=db.query(Constants.TABLE\u NAME\u GROUP\u CONTACTS,null,
“group_id=“+group_id+”&contact_uri_id=“+uri_id,null,null,null)
您的查询语句之间没有空格。不要挑剔,但我看到
c_风格_命名(u约定
与camelCase
混合在一起与PascalCase
和前缀为m(ember)
的局部变量。我知道这与问题没有直接关系,但选择一致的格式不会有什么坏处。@sircodesalot谢谢!我会处理的!:)NP您也可以考虑SQL注入()的恐怖。通常,将用户输入直接传递到数据库不是一个好主意(如果用户键入delete*from table
而不是group\u id
或contact\u uri\u id
,则为图像)。应该是某种“参数化”输入的方法,以便清除任何恶意文本。@sircodesalot虽然这通常是个好建议,但我不确定这些是用户输入。如果应用程序要求我手动输入联系人的uri\u id
,我可能会卸载它。啊,好的。在SQL脚本中看到字符串操作总是有点令人不安。但是,只要他们意识到这一点,这才是最重要的一点,新手犯了这样的错误。。。谢谢,成功了!我得等几分钟,直到我能把答案标记为已接受。
"group_id="+group_id+" AND contact_uri_id="+uri_id