4

私はAndroidの初心者です。

に新しいIDを表示したいTextView。したがって、データベースに格納されている最新のIDをInteger取得し、取得した値に1を加算して宣言し、に表示することを考えますTextView

最新のIDの取得に関する質問の多くを読みました。どうすれば使用できますselect last_insert_rowid();か?

ありがとう!

4

3 に答える 3

4

last_insert_rowid()同じセッションで挿入されたレコードに対してのみ機能します。

列が として宣言されINTEGER PRIMARY KEYている場合、新しいレコードで値を指定しないと、SQLite は自動的にその値を生成します。

レコードを挿入する前に ID が本当に必要な場合は、次のように実行できます。

SELECT max(_id) FROM MyTable
于 2012-11-30T22:13:43.613 に答える
3

自動インクリメントを使用する場合

SELECT * from SQLITE_SEQUENCE;

最新のIDを取得します。

于 2012-11-30T15:31:23.027 に答える
3
Cursor c = database.rawQuery("SELECT last_insert_rowid()", null);
c.moveToFirst();
int id = c.getInt(0);
id += 1;

私も初心者なのでうまく説明できません。上記は、同じセッションから最後の挿入 ID を取得します。新しいセッションが開始された場合は機能しません。つまり、何かを挿入して接続を閉じてから再度開くと、0 が返されるため、TextView は常に 1 を表示するため、そのことに注意する必要があります。実装方法がわからないまま、それに関する多くの質問を読みました。上記のコードは、範囲外の例外を取得せずに使用する方法です。

于 2014-01-31T22:53:33.587 に答える