如何在每次创建表时将AutoIncrement值设置为1

时间:2014-02-10 15:08:10

标签: android sqlite

我有几个表,每次用户登录应用程序时都会有新数据。我有一个KEY_ROWIDautoIncrement。我希望它始终以1开头。 我尝试在插入新数据之前截断表。我收到一个错误:

  

“android.database.sqlite.SQLiteException:near”TRUNCATE“:语法   错误(代码1):,编译时:TRUNCATE TABLE StaffListTable“

Sugestions非常感谢。

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);";

3 个答案:

答案 0 :(得分:2)

它非常简单,因为你要截断表值,我知道你不必保护它们或者备份它们。在这种情况下,只需删除表即可。

在onUpdate()方法中,写

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

如果您还有其他需要,请告诉我。快乐的编码。 :)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

有两种方法可以实现truncate(SQLite没有)。您可以在此处按照其他答案DROP然后创建。

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

DELETE FROM sqlite_sequence
WHERE name = 'table_name'

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