gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 13:30:06 25 4
gpt4 key购买 nike

我正在尝试使用“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com