2015-01-04 6 views
0

У меня в этой таблице:SQLite выбор возвращает никаких результатов

enter image description here

и я пытаюсь выбрать phone = 9 и isBlocked = 1

SQLiteDirectCursorDriver: SELECT KEY_ID FROM BLOCKED_PHONES_TABLE WHERE KEY_PHONE = ? AND KEY_IS_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; 
} 

но я пуст набор результатов.

что мне нужно исправить?

enter image description here

ответ

0

Вы запрашиваете строки, столбец KEY_IS_BLOCKED содержит строку 1.

По-видимому, у вас нет строк, где это значение является такой строкой.

API базы данных Android поддерживает только значения строк в качестве параметров. Просто введите номер прямо в 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); 
+0

. Я определяю' KEY_IS_BLOCKED' как тип бит. Так в этом случае я должен использовать ваш синтаксис? –

+0

SQLite не имеет типа бит. –

+0

, так почему это не сработало для синтаксической ошибки? 'CREATE TABLE BLOCKED_PHONES_TABLE (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL DEFAULT 1, KEY_PHONE TEXT UNIQUE, KEY_IS_BLOCKED BIT)' –

-2

Заменить:

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

по

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

И заменить:

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

по:

if(cursor!=null){ 
    cursor.moveToFirst() 
    result = new Phone(); 
    result.id = (cursor.getInt(0)); 
    //TODO : print ID_KEY to check result... 
} 
+0

курсор никогда не имеет значения. 'phone' уже является строкой –