我想使用「DELETE FROM SQLITE_SEQUENCE」SQL語句來重置_ID rowId的編號系統,這是表的主鍵。這使得表格的第一行再次爲1。我能夠在java桌面應用程序中完成此操作,但是在這個android應用程序中它不起作用。有任何想法嗎?無法重置SQLite表中的主鍵編號
編輯:我發現並修復了運行時錯誤。所以我從問題中刪除了堆棧跟蹤。該部分是固定的,但現在它不會重置行的編號。當我顯示數據庫時,它顯示相同的編號。例如,如果我刪除第3行,那麼在「DELETE FROM SQLITE_SEQUENCE is used。」之後仍然缺少第3行,還有什麼我需要在運行該SQL語句之後執行的操作嗎?就像reaload數據庫一樣?我沒必要這樣做與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();
}
從DELETE FROM SQLITE_SEQUENCE WHERE NAME = my_table'沒有您的代碼似乎需要的引號,因此您可能已經更改了自錯誤消息以來的代碼。你可以添加當前的消息嗎? –
我剛剛更新了這個問題,在運行時沒有更多的堆棧跟蹤錯誤,但另一個問題。 – Kevik
如果表中還有數據,即使清除sqlite_sequence,SQLite也不會從1開始序列號。您是否在刪除序列的同時清理了表格? –