我的数据库查询无效。 我试图在查询中做一个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();
}
}
有什么想法吗?
答案 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 }
。