У меня есть одна таблица 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();
}
}
});
Пожалуйста, дайте мне подсказку.
Спасибо в Advance..
Попробуйте следующее:
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();
Я думаю, было бы лучше, если бы вы использовали запрос метода из класса 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 в столбце INTEGER с именем "_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;
}
просто вы можете перемещаться с помощью курсора moveToLast(); метод обеспечивает переход к последней записи
cursor.moveToLast();