2015-01-18 3 views
-2

Мой запрос к базе данных не работает. Я пытаюсь сделать WHERE в запросе, но как-то он не работает. Я хочу получить все comentarios, которые имеют тот же ISBN.Запрос базы данных курсора с WHERE

Это мой DbHelper КЛАСС:

public static final String TABLE_LIVROS="livros"; 
public static final String KEY_AUTOR = "autor"; 
public static final String KEY_TITULO = "titulo"; 
public static final String KEY_ISBN = "isbn"; 
public static final String KEY_DATAPUBLICACAO = "dataPublicacao"; 

public static final String TABLE_COMENTARIOS ="tabelaComentarios"; 
public static final String KEY_TITULO_COMENT="tituloDoComentario"; 
public static final String KEY_PARTE_REFERENTE = "parteDoLivroReferente"; 
public static final String KEY_COMENTARIO = "comentario"; 
public static final String KEY_DATAPUB_COMENT = "dataPublicComentario"; 
public static final String KEY_LIVRO_REFERENTE = "livroReferente"; 
public static final String KEY_NUMERO_COMENT="1"; 


public static final String TABLE_LIVROS_CREATE = 
     "create table " + TABLE_LIVROS + " (" + 
       KEY_ISBN + " integer primary key, " + 
       KEY_TITULO + " text not null, " + 
       KEY_AUTOR + " text not null, " + 
       KEY_DATAPUBLICACAO + " text not null);"; 

public static final String TABLE_COMENTARIOS_CREATE = 
     "create table" + TABLE_COMENTARIOS + " (" + 
       KEY_NUMERO_COMENT + " integer primary key autoincrement, "+ 
       KEY_TITULO_COMENT + " text not null, " + 
       KEY_PARTE_REFERENTE + " text not null, " + 
       KEY_COMENTARIO + " text not null, " + 
       KEY_DATAPUB_COMENT + " text not null, " + 
       KEY_ISBN + " integer);" ; // FR KEY 

метод я использую для вызова запроса в DbAdapter класса.

public Cursor getComentarios(String isbn){ 

     Cursor cursor; 
     cursor = database.query(DbHelper.TABLE_COMENTARIOS, null, "isbn ="+isbn, 
       new String[] { isbn }, null, null, null); 

     return cursor; 
    } 

Тогда я звоню курсор в See_comentario КЛАССА

private void displayList() { 
     db.open(); 
     Toast.makeText(getApplicationContext(),"ISBN: "+ isbn,    Toast.LENGTH_SHORT).show(); 

    try{  
     Cursor mCursor = db.getComentarios(isbn.trim()); 
     Toast.makeText(getApplicationContext(), "Cursor WORKS!!!!", Toast.LENGTH_SHORT).show(); 
    }catch(Exception e){ 
     Toast.makeText(getApplicationContext(), "Cursor DOESNT WORK", Toast.LENGTH_SHORT).show(); 
    } 
} 

Есть идеи?

+0

Вам не хватает места здесь: '" create table "+ TABLE_COMENTARIOS' Таблица не создана. –

ответ

1

ISBN, вероятно, это строка. Строки должны быть обернуты одиночными кавычками.

Эта упаковка выполняется автоматически с использованием заполнителей («?»).

Попробуйте это:

cursor = database.query(DbHelper.TABLE_COMENTARIOS, new String[] { KEY_TITULO }, 
     "isbn=?", new String[] { isbn }, null, null, null); 

Edit:

Я вижу, что ваш ISBN фактически является целым числом, которое является странным, так как ISBNs обычно содержат дефис.

В любом случае правильный запрос будет таким:

cursor = database.query(DbHelper.TABLE_COMENTARIOS, new String[] { KEY_TITULO }, 
     KEY_ISBN + "=" + isbn, null, null, null, null); 

Обратите внимание, что вам необходимо предоставить столбцы, которые вы хотите выбранные: new String[] { KEY_TITULO }.

Смежные вопросы