0

これは私が挿入に使用しているものです:

 public long insert(String content, Date startAt, Date endAt) {
        if (content == null || startAt == null) {
            return 0;
        }

        ContentValues contentValues = new ContentValues();
        contentValues.put(KEY_CONTENT, content);
        contentValues.put(KEY_START_AT, startAt.getTime());
        if (endAt == null) {
            contentValues.putNull(KEY_END_AT);
        } else {
            contentValues.put(KEY_END_AT, endAt.getTime());
        }

        return sqLiteDatabase.insert(TABLE_NAME, null, contentValues);
    }

最後に挿入された行を更新する更新メソッドを作成したいと思います。最後に挿入された行を取得するにはどうすればよいですか?

4

4 に答える 4

1

を使用しcursorて行を取得し、次のように言うことができます。

   cursor.moveToLast();

また

  cursor.moveToPosition(cursor.getCount() - 1);
于 2013-03-06T12:52:13.073 に答える
1

主キーとして機能するid属性がある場合は、SqlLiteで生のデータベースクエリを実行できます。

Cursor cc = this.mDb.rawQuery("SELECT *" + " FROM " + "<Your DATABASE_NAME> " + 
"ORDER BY id " + "DESC LIMIT 1", null);
return cc;

ここで、1.カーソルを返します。2.mDbはSQLiteDatabaseクラスインスタンスです。3. ORDER BY idを使用すると、クエリをID番号で並べ替えることができます。前述したように、テーブルの主キーとしてIDがある場合、最新のエントリには最大ID番号が含まれます。4. DESCでは、降順で並べ替えることができます。5. LIMIT 1では、1行のみを返すことができます。6.生のクエリを作成するときは常に注意してください。クエリ内の空白は、慎重に処理しないと非常に苦痛になる可能性があります。

その他のクエリについては、このチュートリアルを参照してください。そして明らかにDivyaの答えも良いものです。

于 2013-03-06T13:43:37.293 に答える
0

多分彼はこのようなものを使うべきです

public long getLastId() {
    Cursor c = mDb.query(currentTableName, new String[] { "MAX(_id)" },
            null, null, null, null, null, null);

            try{
    c.moveToFirst();
    long id = c.getLong(0);
    return id;
            }catch(Exception e){
              return 0;
            }

}

ここで、_idは行を識別するための列です。

于 2013-03-08T21:27:38.247 に答える
0

テーブルに行を挿入すると、挿入クエリは最後に挿入された行のキーを返します。これで、このキーを使用してこの行を更新できます。

例えば

int newInsertedKey = sqLiteDatabase.insert(TABLE_NAME、null、contentValues);

update table_name set column_name ='Change 2'where columnID = newInsertedKey

効率的な方法は、最後に更新された行を取得するためのデータベースクエリを回避することです。

于 2013-03-06T15:48:30.983 に答える