使用WHERE进行游标数据库查询

时间:2015-01-18 16:01:02

标签: android sqlite

我的数据库查询无效。 我试图在查询中做一个WHERE但不知何故它不起作用。 我希望得到所有具有相同ISBN的comentarios。

这是我的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类中。

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();
    }
}

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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 }