我正在尝试使用“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();
}