gpt4 book ai didi

android - 从数据库中删除所有数据时如何重置自动增量int?

转载 作者:搜寻专家 更新时间:2023-10-30 21:51:37 24 4
gpt4 key购买 nike

这是我的数据库

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_CATEGORY + " TEXT NOT NULL, " +
KEY_DATE + " TEXT, " +
KEY_PRICE + " LONG, " +
KEY_DETAILS + " TEXT NOT NULL);"
);

这是删除所有数据的方法

public void deleteall() {
// TODO Auto-generated method stub
ourDatabase.delete(DATABASE_TABLE, null, null);

}

这是删除特定数据的方法

public void deletentry(long l) {
// TODO Auto-generated method stub
ourDatabase.delete(DATABASE_TABLE, KEY_ROWID + " = " + l,null);

}

这里使用我删除的数据,但增加的 row-id 保留在那里,我想将其重置为 1,因为数据也被删除,如果我删除特定数据,row-id 会按顺序更改它的值,应该有row-id 之间没有间隙。

最佳答案

我认为 autoincrement 不是您的最佳选择。如果您的目标是创建一个没有间隙的简单编号表,使用带有一列的表来手动跟上您的 ID 可能会更容易处理。

如果您创建了一个这样的表,则可以在代码中为以下操作编写辅助方法:addColumn、removeColumn、emptyTable。

您的 addColumn 方法将查询表并确定 max(ID),然后加 1 并将该数字用于下一个条目。

您的 removeColumn 方法可以通过 ID 删除条目,然后使用该 ID 对其上方的所有内容重新排序。或者,如果顺序不重要,它可以取最后一行并重新编号以填补空白。

您的 emptyTable 方法可以删除所有条目。

更新也许这可以让你开始。这些方法需要在您的程序中定义。您必须将代码放入其中,然后设置它们才能被调用。

例如:

public void addColumn(String category, long date, String details) {
//code here would need to determine the max of ID and add one
//to it. the sql below would retrieve max, i dont know the sql lite code
//off the top of my head.
//SELECT MAX(ID) FROM DATABASE_TABLE;
int newID = max + 1;
//add row to the database using newID
}

public void removeColumn(int id) {
//remove column from database
//DELETE FROM DATABASE_TABLE WHERE ID = id;
//change last entry to use id
//UPDATE DATABASE_TABLE SET ID = id WHERE id = (SELECT MAX(ID) FROM DATABASE_TABLE);
}

public void emptyTable() {
//DELETE FROM DATABASE_TABLE;
}

要调用这些方法,您可以像调用类中的任何其他 Java 方法一样调用它们:

addColumn(12, 'text', (long)100, 'text');
removeColumn(10);
emptyTable();

关于android - 从数据库中删除所有数据时如何重置自动增量int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15440419/

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