我们尝试sqlite_sequence使用以下代码进行更新.
WeNoteRoomDatabase weNoteRoomDatabase = WeNoteRoomDatabase.instance();
weNoteRoomDatabase.query(new SimpleSQLiteQuery("UPDATE sqlite_sequence SET seq = 0 WHERE name = 'attachment'"));
Run Code Online (Sandbox Code Playgroud)
但是,它完全没有效果.我sqlite_sequence使用SQLite浏览器检查表内容.计数器未重置为0.
如果我们尝试在同一个SQLite文件上使用SQLite浏览器手动运行相同的查询,它就可以正常工作.
我们的房间数据库非常简单.
@Database(
entities = {Attachment.class},
version = 6
)
public abstract class WeNoteRoomDatabase extends RoomDatabase {
private volatile static WeNoteRoomDatabase INSTANCE;
private static final String NAME = "wenote";
public abstract AttachmentDao attachmentDao();
public static WeNoteRoomDatabase instance() {
if (INSTANCE == null) {
synchronized (WeNoteRoomDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(
WeNoteApplication.instance(),
WeNoteRoomDatabase.class,
NAME
)
.build(); …Run Code Online (Sandbox Code Playgroud) 如何在Ormlite中更新表sqlite_sequence?我只需要更新seq.如何通过ORMLite获取该表?
编辑
我找不到ORLite工具来做这个,所以我使用简单的sqlite查询.在我的类扩展OrmLiteSqliteOpenHelper我使用SQLiteDatabase进行更新.
EDIT2;)
在我的项目中,我坚持课课和课堂定义.
class Lesson{
@DatabaseField(generatedId=true)
private int id;
...
}
class WeekDefinitions{
@DatabaseField(generatedId=true)
private int id;
@DatabaseField(foreign=true, columnName="lesson_id")
private Lesson lesson;
...
}
Run Code Online (Sandbox Code Playgroud)
现在,当我添加新课程时,id是递增的.例如
id = 1 Math
id = 2 English
id = 3 Medicine
Run Code Online (Sandbox Code Playgroud)
并在weekDefinition中:
id = 1 lesson_id = 1 nr = 20
id = 2 lesson_id = 1 nr = 22
id = 3 lesson_id = 2 nr = 32
...
id = 12 lesson_id = 3 nr = 3
Run Code Online (Sandbox Code Playgroud)
SQLite将此行添加到sqlite_sequence中(使用autoincrement时)
rowId = …Run Code Online (Sandbox Code Playgroud) 我需要截断房间数据库中的一个表。或者我需要将自动增量键重置为 0。有什么办法可以做到这一点。