1

私の質問は、テーブルの最大ID行を取得する方法についてです... max関数を使用していますが、エラーが発生します

ここに画像の説明を入力してください

これが私のコードです

     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;
}

助けてくれてありがとう...:)

4

3 に答える 3

3

を格納するために使用されるsqlite_sequenceという名前のテーブルがあります。SQLITEauto_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);
于 2012-09-11T09:03:46.893 に答える
2

クエリ(表示されている部分も)は有効なSQLではありません。

特定の列の最大値を取得するには、次のようなものを使用します。

SELECT MAX(_id) FROM mytable;

SQLiteでは、IDが行IDである場合(ドキュメントを参照次の操作を実行できます。

SELECT last_insert_rowid();
于 2012-09-10T21:02:28.700 に答える
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;
}
于 2012-09-11T11:33:25.840 に答える