如何从Sqlite获取最后一条logging?
我有一个表question_table
和一个ImageButton
( 返回 )。 点击Back后,我需要从数据库中获取最后插入的logging。
我的行包含以下列: question
, optionA
, optionB
, optionC
, optionD
,我需要在我的Activity
使用的数据。 我在数据库中创build一个方法,但它不工作。
以下是供参考的代码:
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; }
来自AddQuestionActivity.java的OnClickListner
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(); } } });
请给我一些提示。
提前致谢..
尝试这个:
SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE);
要么
你也可以使用下面的解决scheme:
SELECT * FROM tablename ORDER BY column DESC LIMIT 1;
我认为最重要的答案有点冗长。 只需input以下内容!
SELECT * FROM table ORDER BY column DESC LIMIT 1;
快乐的时光。
从你的表中获取最后一条logging
String selectQuery = "SELECT * FROM " + "sqlite_sequence"; Cursor cursor = db.rawQuery(selectQuery, null); cursor.moveToLast();
如果你已经有了游标,那么这就是你如何得到游标的最后一个logging:
cursor.moveToPosition(cursor.getCount() - 1); //then use cursor to read values
我认为如果使用从整个SQLstring中embedded的SQLiteDatabase类中的方法查询会更好,这将是:
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
假设您正在查找表dbstr.TABNAME的最后一行,将其放入名为“_ID”的INTEGER列(例如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(); 方法提供移动到最后一条logging
cursor.moveToLast();