Android 检查数据库中是否存在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 =

我的数据库中有一个表,它由以下字段组成: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 = 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