如何从Sqlite获取最后一条logging?

我有一个表question_table和一个ImageButton返回 )。 点击Back后,我需要从数据库中获取最后插入的logging。

我的行包含以下列: questionoptionAoptionBoptionCoptionD ,我需要在我的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();