查询特定列值时,Cursor返回空,即使存在行

时间:2011-07-11 21:56:49

标签: android database sqlite

我已经实现了一个自定义的SQLite数据库帮助器。我有一个包含短信的表。我在这个表中查询特定电话号码的条目,如下所示:

public Cursor getSmsForContact(String phoneNumber) throws SQLException {
    phoneNumber = PhoneNumberUtils.stripSeparators(phoneNumber);
    Cursor cursor =
     db.query(DATABASE_TABLE, new String[] {
            KEY_DATE,
            KEY_BODY,
            KEY_CONTACT,
            KEY_TYPE,
            KEY_ROWID,
            KEY_MESSAGE_STATE
    }, KEY_CONTACT + "=" + phoneNumber, null, null, null, null);

    return cursor;
}

此方法适用于前面没有“+”的数字(表示国家/地区代码)。但是,当phoneNumber在前面有“+”时,它总是返回一个空光标。我已经确认PhoneNumberUtils.stripSeparators()方法没有删除“+”符号。我还验证了表中存在的行与正在查询的电话号码相匹配。 谢谢!

1 个答案:

答案 0 :(得分:1)

尝试

}, KEY_CONTACT + "= ?" , new String[] {phoneNumber}, null, null, null);

电话号码被解释为一个数字;你希望它被解释为一个字符串