获取表格的MAX ID行

时间:2012-09-10 17:22:46

标签: android sqlite max

我的问题是关于如何获取表的最大id行...我正在使用max函数但是给我一个错误

enter image description here

这是我的代码

     public static long getLastIdQuotaAdded(Context context){
    long id;
    Cursor cursor;
    String selection = null;
    String[] selectionArgs = null;

    selection = "MAX(" + C_ID + ")";

    cursor=context.getContentResolver().query(URI, ALL_COLUMNS, selection, selectionArgs, null);
    id = cursor.getLong(cursor.getColumnIndex(C_ID));
    return id;
}

谢谢你的帮助...... :)。

3 个答案:

答案 0 :(得分:3)

sqlite_sequence中有一个名为SQLITE的表,用于存储auto_increment_key

这是获取最新auto_increment_key值的查询。

Cursor cursor = db.rawQuery("SELECT seq FROM sqlite_sequence WHERE name=?",
                new String[] { TABLE_NAME });
int last = (cursor.moveToFirst() ? cursor.getInt(0) : 0);

答案 1 :(得分:1)

您的查询(即使是可见的部分)也不是有效的SQL。

要获取特定列的最大值,请使用以下内容:

SELECT MAX(_id) FROM mytable;

在SQLite中,如果您的ID是 行ID(请参阅the documentation),您可以这样做:

SELECT last_insert_rowid();

答案 2 :(得分:0)

以下是我获取表格最大ID的解决方案....

   public static long getLastIdQuotaAdded(Context context){

    Cursor cursor;
    String selection = null;
    String[] selectionArgs = null;
    selection = "SELECT MAX("+C_ID+") FROM sessaoquota";

    cursor=context.getContentResolver().query(URI, ALL_COLUMNS, selection, selectionArgs, null);

    if(cursor.moveToFirst())
        do{
            idMax = cursor.getInt((0));
        }while(cursor.moveToNext());

    return idMax;
}