「DELETE FROM SQLITE_SEQUENCE」SQL ステートメントを使用して、テーブルの主キーである _ID rowId の番号付けシステムをリセットしようとしています。これにより、テーブルの最初の行が再び 1 になります。Javaデスクトップアプリでは問題なくこれを行うことができましたが、このAndroidアプリでは機能していません。何か案は?
編集:実行時エラーを見つけて修正しました。そのため、質問からスタックトレースを削除しました。その部分は修正されましたが、行の番号付けはリセットされなくなりました。データベースを表示すると、同じ番号が表示されます。たとえば、行 3 を削除すると、「DELETE FROM SQLITE_SEQUENCE が使用された後も行 3 が欠落しています。その SQL ステートメントを実行した後に他に何かする必要がありますか?データベースを再ロードするなど、必要はありませんでした。 Javaアプリでそれを行います。
データベースクラスから
public static final String MYDATABASE_NAME = "my_database";
public static final String MYDATABASE_TABLE = "my_table";
public static final int MYDATABASE_VERSION = 1;
public static final String _ID = "_id";
public static final String TABLE_STRING = "table_string";
public static final String PAGE = "page";
public static final String VERSION = "version";
//create table MY_DATABASE (_ID integer primary key, Content text not null);
private static final String SCRIPT_CREATE_DATABASE =
"CREATE TABLE IF NOT EXISTS " + MYDATABASE_TABLE + " (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
TABLE_STRING + " TEXT, " + PAGE + " TEXT, " + VERSION + " TEXT);";
SQLiteDatabase sqLiteDatabase;
SQLiteHelper sqLiteHelper;
Context context;
データベースクラスから
public void resetRowNumbers(){
sqLiteDatabase.execSQL("DELETE FROM SQLITE_SEQUENCE WHERE NAME =
'" + MYDATABASE_TABLE + "'");
}
MainActivity クラスから
public void resetRowNumbering(){
db = new Database(getApplication());
db.openToWrite();
db.resetRowNumbers();
db.close();
}