我也是Android和SQLite的新手。我试图编写一个方法,其中DB查询从DB获取特定行。如果将Selection设置为null,则此方法的版本可以正常工作:
public String anotherTry(){
String[] columns = new String[]{ KEY_SDATE, KEY_SC, KEY_VE };
Cursor cursor = db.query(DATABASE_TABLE, columns, null, null, null, null, null);
String result = "";
if (cursor != null){
cursor.moveToFirst();
result = result
+ cursor.getString(0) + "\n"
+ cursor.getString(1) + "\n"
+ cursor.getString(2) + "\n";
return result;
}
return null;
}
但如果我在Selection参数中放入任何内容,它就会崩溃。例如:
public String anotherTry(){
String[] columns = new String[]{ KEY_SDATE, KEY_SC, KEY_VE };
Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + "8", null, null, null, null);
String result = "";
if (cursor != null){
cursor.moveToFirst();
result = result
+ cursor.getString(0) + "\n"
+ cursor.getString(1) + "\n"
+ cursor.getString(2) + "\n";
return result;
}
return null;
}
这里出了什么问题?我试图让第8行显示出来。我已经尝试了所有我能想到的格式组合:KEY_ROWID +" =" +" 8",KEY_ROWID =" 8"等等,但没有运气。谢谢你的帮助!
答案 0 :(得分:0)
尝试下面的代码,我认为它适用于你
Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID+"=?", new String[] {"8"}, null, null, null);
答案 1 :(得分:0)
尝试以下代码:
Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID + "=8", null, null, null, null);
或者我认为数据库中没有任何内容存在KEY_ID = 8 bcoz当查询没有返回数据时会出现CursorIndexOutOfBounds异常。检查数据库是否存在于KEY_ROWID = 8