android - 无法重置 SQLite 表中的主键编号

标签 android database sqlite

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

最佳答案

首先你不应该删除序列,而是将它重置为零:

"UPDATE sqlite_sequence SET seq = 0 WHERE name=  '" + MYDATABASE_TABLE + "'"

但一般来说,您可能知道这一点,重置序列几乎不是一个好主意。

关于android - 无法重置 SQLite 表中的主键编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16645195/

相关文章:

SQLite:排序我的选择结果

java - flutter : Android license status unknown

Android ListView和滚动问题

android - Ionic firebase 指定 google-services.json

mysql - Haversine 公式在查询中返回 null

mysql - 无法从导入的 MySQL 数据库获取地理定位结果

Android多图顺序作为按钮的背景资源

Mysql每日重置次数

python - 从 Python SQLite3 查询中求和数字

java - Android开发-数据库插入空指针异常