如何在从数据库中删除行后更新SQLite数据库中的KEY_ROWID号? 情况1: 例如,如果我在数据库中有五行,那么当时最大KEY_ROWID为5。我删除了表中的所有行。然后我添加新行,此时KEY_ROWID不再从1开始,它从6开始。如何重置KEY_ROWID再从1开始。 案例2: 如果我删除第三行,现在表中只有四行,第4行变为3,第5行变为4。 如何在程序中进行这些更改? 我是否需要为这些更改对其进行编程,或者SQLite中是否有任何设置在删除行后更新KEY_ROWID? 感谢
答案 0 :(得分:0)
You can reset the sequences if you're deleting all data;
DELETE FROM test;
DELETE FROM sqlite_sequence WHERE name='test';
对于表格中仍有数据时重新编号主键,我真诚地建议反对它,因为任何引用你表格的外键都会被破坏。
答案 1 :(得分:-1)
解决方案是用新的数组或列表重写表;
reWriteTable是将允许对行进行自动排序。
private void reWriteTable(){
if(db.listOfDate().size()!=0){
String[] name =new String[db.listOfDate().size()] ;
String[] note=new String[db.listOfDate().size()] ;
String[] date =new String[db.listOfDate().size()];
String[] time =new String[db.listOfDate().size()];
String[] total =new String[db.listOfDate().size()];
for(int i=0;i<db.listOfDate().size();i++) {
String currentString =db.listOfDate().get(i) ; // 0,1,2,3
separated = currentString.split("-"); //Take words between "-" from Database
name[i]=separated[1];
note[i]=separated[2];
date[i]=separated[3];
time[i]=separated[4];
total[i]=separated[1]+"-"+separated[2]+"-"+separated[3]+"-"+separated[4];
}
db.deleteTable();
//db=new Database(MainActivity.this);
for(int i=0;i<total.length;i++) {
Log.d("TAG",String.valueOf(total.length)+" "+total[i]);
String currentString =total[i] ; // 0,1,2,3
separated = currentString.split("-"); //Take words between "-" from Database
name[i]=separated[0];
note[i]=separated[1];
date[i]=separated[2];
time[i]=separated[3];
// total[i]=separated[1]+"-"+separated[2]+"-"+separated[3]+"-"+separated[4];
db.addData(name[i],note[i],date[i],time[i]);
}
}
}
在Database.java中定义删除表;
protected void deleteTable(){
SQLiteDatabase db=this.getWritableDatabase();
db.execSQL(" drop table if exists " + TABLO_UYGULAMALAR + ";");
onCreate(db);
}