使用我创建的数据库需要一些帮助。我需要访问数据库中的最后一项。这是我获取单个项目的代码。如何将其更改为仅获取最后一个?
// Getting single user
User getuser(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_USER, new String[] { KEY_ID,
KEY_NAME, KEY_AGE, KEY_WEIGHT, KEY_HEIGHT,
KEY_GOAL, KEY_BMI }, KEY_ID + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);
if(cursor!=null && cursor.getCount()!=0){
cursor.moveToFirst();
}
User user = new User(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getInt(2),cursor.getInt(3), cursor.getInt(4),
cursor.getString(5), cursor.getFloat(6));
return user;
}
答案 0 :(得分:1)
Cursor cursor = db.query(TABLE_USER, new String[] { KEY_ID,
KEY_NAME, KEY_AGE, KEY_WEIGHT, KEY_HEIGHT,
KEY_GOAL, KEY_BMI }, KEY_ID + "=?",
new String[] { String.valueOf(id) }, null, null, KEY_ID + " DESC", "LIMIT 1");
答案 1 :(得分:0)
您是否正在寻找cursor.moveToLast()
?这会将光标移动到从查询中选择的最后一条记录。然后,您可以照常使用cursor.getString(n)
等获取字段值。
答案 2 :(得分:0)
您只需在代码中稍微更改一下,
// Getting single user
User getuser(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_USER, new String[] { KEY_ID,
KEY_NAME, KEY_AGE, KEY_WEIGHT, KEY_HEIGHT,
KEY_GOAL, KEY_BMI }, KEY_ID + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);
if(cursor!=null && cursor.getCount()!=0){
cursor.moveToLast(); // Change here
}
User user = new User(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getInt(2),cursor.getInt(3), cursor.getInt(4),
cursor.getString(5), cursor.getFloat(6));
return user;
}
答案 3 :(得分:0)
试试这个:
Cursor c = db.rawquery("Select *from tablename");
c.movetoLast();
如果您想从上次到第一次获取数据,请使用以下代码:
Cursor c = db.rawquery("Select *from tablename");
c.movetoLast();
int count = c.getCount();
for(int i = 0; i < count; i++){
c.movetoPrevious();
}
答案 4 :(得分:0)
如果id唯一地标识用户,那么您将只获得一行作为您传递的id的结果,因此您不必担心它是数据库中的最后一个或第一个。如果只是你想要数据库中的最后一行,那么你不必传递一个id你可以做一个select *并且在检索之后将光标移动到最后,即cursor.moveToLast()。
如果您只想要最后一行,请执行此操作
User getuser() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_USER, new String[] { KEY_ID,
KEY_NAME, KEY_AGE, KEY_WEIGHT, KEY_HEIGHT,
KEY_GOAL, KEY_BMI }, null,
null, null, null, null, null);
if(cursor!=null && cursor.getCount()!=0){
cursor.moveToLast();
}
User user = new User(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getInt(2),cursor.getInt(3), cursor.getInt(4),
cursor.getString(5), cursor.getFloat(6));
return user;
}
你的电话可以是这样的
User currentUser = db.getUser();
如果您要传递ID以获取用户详细信息,则该ID唯一标识该用户,那么您所做的工作将起作用