1

私が作成したデータベースの使用について、助けが必要です。データベースの最後の項目にアクセスする必要があります。これは、単一のアイテムを取得する私のコードです。最後だけを取得するように変更するにはどうすればよいですか?

// 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;
}
4

5 に答える 5

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");
于 2013-05-17T02:49:14.997 に答える
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();
}
于 2013-05-17T05:46:28.787 に答える
0

ID がユーザーを一意に識別する場合、渡す ID の結果として 1 つの行のみが取得されるため、それがデータベースの最後または最初であることを心配する必要はありません。データベースの最後の行が必要なだけの場合は、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がユーザーを一意に識別し、行ったことは機能します

于 2013-05-17T06:56:51.703 に答える
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;
}
于 2013-05-17T03:43:05.143 に答える