使用 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 }
。
我的数据库查询不工作。 我正在尝试在查询中执行 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
中调用 Cursorprivate 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 }
。