Android / Java:如何在sqlite中获取最后一行值?

时间:2014-11-25 21:23:22

标签: java android sqlite

您好我在我的Android应用程序中使用sqlite数据库,我有疑问: 我试图从表TABLE_XYZ的最后一行获取最后一个值文本(那就是collumn)但是它不起作用..我正在使用以下代码......我做错了什么?

另一个问题是,当我想从列文本和消息的最后一行获取多个值时,如何返回两个值而不是一个?

private static final String KEY_MESSAGE = "message";
private static final String KEY_TEXT = "text";

...

String selectQuery= "SELECT * FROM " + TABLE_XYZ+" ORDER BY column DESC LIMIT 1";
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
     cursor.close();
    return cursor.getString( cursor.getColumnIndex(KEY_TEXT) ); 

编辑:

我在我的查询中有一些错误,我修复了它,但仍然有错误:

    String selectQuery= "SELECT * FROM " + TABLE_XYZ +  " ORDER BY " +  KEY_TEXT+ " DESC LIMIT 1";
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    String str =  cursor.getString( cursor.getColumnIndex(KEY_TEXT );
    cursor.close();
    return str; 

在调试时我可以看到游标内部有正确的值...但是当我尝试使用此命令获取列值" cursor.getString(cursor.getColumnIndex(KEY_TEXT);" ......它不起作用......

5 个答案:

答案 0 :(得分:3)

你在获得它之前关闭光标的值

试试这个:

String selectQuery= "SELECT * FROM " + TABLE_XYZ+" ORDER BY column DESC LIMIT 1";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
String str = "";
if(cursor.moveToFirst())
    str  =  cursor.getString( cursor.getColumnIndex(KEY_TEXT) );
cursor.close();
return str;

答案 1 :(得分:1)

来自android文档:http://developer.android.com/reference/android/database/Cursor.html

abstract void close() 关闭Cursor,释放所有资源并使其完全无效。

您在返回字符串之前关闭光标。

答案 2 :(得分:1)

喜欢@ whatever5599451表示你不应该在获得值之前关闭光标。还可以尝试这样的查询:

String selectQuery = "SELECT column FROM " + TABLE_XYZ + 
                     " ORDER BY column DESC LIMIT 1";

您可以指定列也指定仅返回1行。

这将只返回您订购的列,您还可以指定更多列示例:

String selectQuery = "SELECT column, column2, column3 FROM " + TABLE_XYZ + 
                     " ORDER BY column DESC LIMIT 1";

*表示选择所有列

答案 3 :(得分:0)

要获取最后一列,请使用列的名称而不是" *" (*表示所有,所有字段)

答案 4 :(得分:0)

@Steve:这样做:

String selectQuery= "SELECT " + KEY_TEXT + " FROM " + TABLE_XYZ + " ORDER BY " + KEY_TEXT+ " DESC LIMIT 1";

然后你得到一个字符串,最后一个记录只包含正确的列