1

私が構築しているアプリでは、自動インクリメント行があるため、Android の SQL データベースに 3 つのエントリを追加するとします。これは 0,1,2 ですが、データベースから 3 つのエントリを削除してから別のエントリを追加すると、自動で続行されます。データベースに入れられた最後の自動インクリメント番号からのインクリメント番号なので、データベース内のすべてのエントリを削除した場合、その時点でデータベースにノッティングが残っている場合、最後の自動インクリメント番号を取得するにはどうすればよいですか?

アップデート

「SELECT last_insert_rowid()」を使用しようとすると、大量のごみが発生します。

データベースファイルには次のものがあります:

 public Cursor getmax(){
        return databaseConnect.rawQuery("SELECT last_insert_rowid()", null);
    }

そして、ファイル内で、戻った場合に最後の行を取得しようとしています:

  Cursor reminder = databaseHelper.getmax();
 String title = reminder + "";

上記のように文字列に変換する必要がありますが、チェックするとゴミが戻ってきますか?

4

4 に答える 4

0

試す...

String maxValue = "0";
Cursor c = db.rawQuery("SELECT seq FROM sqlite_sequence WHERE sqlite_sequence.name = 'MY_TABLE'", null);
if (c != null && c.moveToFirst())
    maxValue = String.valueOf(c.getInt(c.getColumnIndex("seq")));
于 2012-04-07T00:09:58.537 に答える
0

2 つのオプション:

-挿入操作が挿入したばかりの行の ID を返すように、挿入用のデータベース トリガーを作成します。その値を共有設定のような場所に保存します。

-データベースが空だからといって、自動インクリメント インデックスを最初からやり直すべきではありません。最後の行のインデックスが必要な場合は、行を挿入し、そのインデックスを確認して、1 を減算します。次に、空の行を削除します(それに応じて「最後に挿入されたインデックス」を更新します)

于 2012-04-07T00:46:07.233 に答える
0

それがアンドロイドなら、私はそれがSQLLiteだと推測しています。あなたは使用できるはずです

SELECT last_insert_rowid()
于 2012-04-06T23:56:11.263 に答える
0

いつでも列の最大値を取得して追加できます

于 2012-04-06T23:58:59.913 に答える