使用 WHERE 查询游标数据库

Cursor database query with WHERE

我的数据库查询不工作。 我正在尝试在查询中执行 WHERE 但不知何故它不起作用。 我想获得所有具有相同 ISBN 的评论。

这是我的 DbHelper CLASS:

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 Class。

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 CLASS

中调用 Cursor
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();
    }
}

有什么想法吗?

ISBN 大概是一个字符串。字符串需要用单引号括起来。

此换行是使用占位符(“?”)自动完成的。

试试这个:

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

编辑:

我看到您的 ISBN 实际上是一个整数,这很奇怪,因为 ISBN 通常包含破折号。

无论如何,正确的查询应该是:

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

请注意,您需要提供要选择的列:new String[] { KEY_TITULO }