Как получить последнюю запись из Sqlite?



у меня есть одна таблица question_table и ImageButton (назад). Мне нужно получить последнюю вставленную запись из базы данных после нажатия на назад.



моя строка содержит следующие столбцы: question,optionA,optionB,optionC,optionD и мне нужны данные для использования на моем Activity. Я создаю один метод в базе данных, но он не работает.



вот код для ссылки:



MySQLiteHelper.java выдержка:



public List<ObjectiveWiseQuestion> getLastInsertQuestion()
{
// long index = 0;
List<ObjectiveWiseQuestion>LocwiseProfileList=new ArrayList<ObjectiveWiseQuestion>();
db = getReadableDatabase();
Cursor cursor = db.query(
"sqlite_sequence",
new String[]{"seq"},
"name = ?",
new String[]{TABLE_QUESTION},
null,
null,
null,
null );

if (cursor.moveToFirst())
{
do {
ObjectiveWiseQuestion owq= new ObjectiveWiseQuestion();

owq.setQuestion(cursor.getString(2));
owq.setOptionA(cursor.getString(3));
owq.setOptionB(cursor.getString(4));
owq.setOptionC(cursor.getString(5));
owq.setOptionD(cursor.getString(6));
owq.setCorrectOption(cursor.getString(7));
LocwiseProfileList.add(owq);
} while(cursor.moveToNext());

db.close();
}

return LocwiseProfileList;
}


OnClickListner С AddQuestionActivity.java



imgBack.setOnClickListener( new View.OnClickListener() 
{
@Override
public void onClick(View v)
{
msg();
emptyFormField();

try {
final List<ObjectiveWiseQuestion> LocWiseProfile = db.getLastInsertQuestion();

for (final ObjectiveWiseQuestion cn : LocWiseProfile)
{
db=new MySQLiteHelper(getBaseContext());
db.getWritableDatabase();
txtQuestion.setText(cn.getQuestion());
txtOptionA.setText(cn.getOptionA());
txtOptionB.setText(cn.getOptionB());
txtOptionC.setText(cn.getOptionC());
txtOptionD.setText(cn.getOptionD());
txtCorrectOption.setText(cn.getCorrectOption());
db.close();
}
} catch(Exception e) {
e.printStackTrace();
}
}
});


пожалуйста, дайте мне подсказку.

1498   9  

9 ответов:

попробуйте это:

SELECT * 
    FROM    TABLE
    WHERE   ID = (SELECT MAX(ID)  FROM TABLE);

или

вы также можете использовать следующее решение:

SELECT * FROM tableName ORDER BY column DESC LIMIT 1;

Я думаю, что верхний ответ немного многословен, просто используйте это

SELECT * FROM table ORDER BY column DESC LIMIT 1;

получить последнюю запись из таблицы..

 String selectQuery = "SELECT  * FROM " + "sqlite_sequence";
 Cursor cursor = db.rawQuery(selectQuery, null);
  cursor.moveToLast();

Я думаю, что было бы лучше, если бы вы использовали метод query из класса SQLiteDatabase, вставленного из всей строки SQL, которая была бы:

 Cursor cursor = sqLiteDatabase.query(TABLE, allColluns, null, null, null, null, ID +" DESC", "1");

последние два параметра-ORDER BY и LIMIT.

вы можете увидеть больше в: http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

Если у вас уже есть курсор, то это, как вы можете получить последнюю запись из курсора:

cursor.moveToPosition(cursor.getCount() - 1);
//then use cursor to read values

Предположим, вы ищете последнюю строку таблицы dbstr.TABNAME, в целочисленный столбец с именем " _ID " (например BaseColumns._ID), но может быть любой другой столбец, который вы хотите.

public int getLastId() {
    int _id = 0;
    SQLiteDatabase db = dbHelper.getReadableDatabase();
    Cursor cursor = db.query(dbstr.TABNAME, new String[] {BaseColumns._ID}, null, null, null, null, null);

    if (cursor.moveToLast()) {
        _id = cursor.getInt(0);
    }

    cursor.close();
    db.close();
    return _id;
}

просто, вы можете двигаться с CursormoveToLast(); метод позволяет перейти к последней записи

cursor.moveToLast();

Я хотел сохранить свою таблицу, потянув за одну строку, которая дает мне последнее значение в определенном столбце таблицы. Я по существу искал, чтобы заменить LAST() функция в excel и это сработало.

, (Select column_name FROM report WHERE rowid = (select last_insert_rowid() from report))

в sqlite есть таблица с именем sqlite_sequence, эта таблица содержит имя таблицы и ее последний идентификационный номер (если идентификатор автоматически увеличивается).

Итак, чтобы получить последнюю строку в таблице, просто говоря :

Select * from TABLENAME where id=(SELECT * from sqlite_sequence where name ='TABLENAME')

Comments

    Ничего не найдено.