Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java sqlite选择不返回任何结果_Java_Android_Database_Sqlite - Fatal编程技术网

Java sqlite选择不返回任何结果

Java sqlite选择不返回任何结果,java,android,database,sqlite,Java,Android,Database,Sqlite,我有这张桌子: 我试着选择phone=9,isBlocked=1 SQLiteDirectCursorDriver:从被阻止的\u电话\u表中选择键\u ID,其中键\u电话=?而键_是_BLOCKED= 代码: Cursor cursor = this.getReadableDatabase().query( BLOCKED_PHONES_TABLE, new String[] { KEY_ID }, KEY_PHONE+" = ? A

我有这张桌子:

我试着选择phone=9,isBlocked=1

SQLiteDirectCursorDriver:从被阻止的\u电话\u表中选择键\u ID,其中键\u电话=?而键_是_BLOCKED=

代码:

    Cursor cursor = this.getReadableDatabase().query(
            BLOCKED_PHONES_TABLE,
            new String[] { KEY_ID  }, KEY_PHONE+" = ? AND "+KEY_IS_BLOCKED+" = ?",
            new String[] { phone, "1" }, null, null, null);

      while(cursor.moveToNext()) {
        result = new Phone();
        result.id = (cursor.getInt(0));
        result.phone = phone;
        result.isBlocked = true;
    }
    return result;
}
但我得到的结果集是空的

我需要修理什么

替换:

new String[] { phone, "1" }, null, null, null);

并替换:

while(cursor.moveToNext()) {
    result = new Phone();
    result.id = (cursor.getInt(0));
    result.phone = phone;
    result.isBlocked = true;
}
作者:


您请求的行的KEY_IS_BLOCKED列包含字符串1

显然,您没有任何行的值是这样的字符串

Android数据库API仅支持字符串值作为参数。 只需将数字直接插入SQL查询:

Cursor cursor = this.getReadableDatabase().query(
        BLOCKED_PHONES_TABLE,
        new String[] { KEY_ID },
        KEY_PHONE + " = ? AND " + KEY_IS_BLOCKED + " = 1" + ,
        new String[] { phone },
        null, null, null);

我将KEY_定义为位类型。所以,在这种情况下,我应该使用您的语法?SQLite没有位类型。那么,为什么这不会因为语法错误而失败呢?CREATE TABLE BLOCKED_PHONES_TABLE id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL默认值1,KEY_PHONE TEXT UNIQUE,KEY_是_BLOCKED BIT我看到了这个。但是,为什么它不会在运行时执行呢?根据第2.1节中的规则,位会产生数值关联。不管你用的是小兔子还是毛茸茸的兔子,都没有任何区别。
if(cursor!=null){
    cursor.moveToFirst()
    result = new Phone();
    result.id = (cursor.getInt(0));
    //TODO : print ID_KEY to check result...
}
Cursor cursor = this.getReadableDatabase().query(
        BLOCKED_PHONES_TABLE,
        new String[] { KEY_ID },
        KEY_PHONE + " = ? AND " + KEY_IS_BLOCKED + " = 1" + ,
        new String[] { phone },
        null, null, null);