Android 如何使自动增量值在每次创建表时以1开头

Android 如何使自动增量值在每次创建表时以1开头,android,sqlite,Android,Sqlite,我有两个表,每次用户登录应用程序时都会有新数据。我有一个列KEY\u ROWID,它是autoIncrement。我希望它总是以1开头。 我尝试在插入新数据之前截断表。我得到一个错误: “android.database.sqlite.SQLiteException:接近“TRUNCATE”:语法 编译时出现错误(代码1):“TRUNCATE TABLE StaffListTable” 非常感谢你的建议 private static final String CREATE_TABLE_STAFF

我有两个表,每次用户登录应用程序时都会有新数据。我有一个列
KEY\u ROWID
,它是
autoIncrement
。我希望它总是以1开头。 我尝试在插入新数据之前截断表。我得到一个错误:

“android.database.sqlite.SQLiteException:接近“TRUNCATE”:语法 编译时出现错误(代码1):“TRUNCATE TABLE StaffListTable”

非常感谢你的建议

private static final String CREATE_TABLE_STAFFLIST = "CREATE TABLE " + TABLE_STAFFLIST + " (" 
                                                        + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                                                        + KEY_STAFFID + " TEXT NOT NULL, "
                                                        + KEY_STAFFNAME + " TEXT NOT NULL);";

sqlite中没有
TRUNCATE
。如果确实需要,您可以使用
DROP
删除表。

这非常简单,因为您正在截断表值,我知道您不必保护它们或进行备份。在这种情况下,只要放下桌子就行了

在onUpdate()方法中,写入

db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE); //and call onCreate again
onCreate(db);

如果你还需要什么,请告诉我。快乐编码:)

有两种方法可以实现截断(SQLite没有)。您可以删除,然后根据此处的其他答案创建

或者,您可以执行删除以清空表,然后从sqlite_序列中删除表的条目:

DELETE FROM sqlite_sequence
WHERE name = 'table_name'

sqlite_序列保存具有此类列的表的上次使用的自动增量值。删除给定表的行将使自动递增键再次从1开始。

在您给出的sqllite_sequence语句中。这个名字代表什么?我试过了,但出现了错误“android.database.sqlite.SQLiteException:没有这样的列:StaffListTable(代码1)”,编译时:DELETE FROM sqlite_SEQUENCE,其中name=StaffListTable“表sqlite_SEQUENCE有两列:'name'保存表名,'seq'保存上次使用的自动递增整数。由于'name'是一个文本列,您需要在语句中引用您的表名:DELETE FROM SQLITE_SEQUENCE,其中name='StaffListTable'是完全相同的消息吗?您能展示一下构建SQL语句字符串的代码吗?我尝试了@atul建议的方法,它对我有效。谢谢你的帮助。非常值得注意的字符串比较区分大小写。存储在sqlite_序列中的表名可能是“STAFFLISTTABLE”或“STAFFLISTTABLE”Hurray,great:)。如果答案对你有帮助,你也可以投票或接受答案。:)