如何在删除SQLite数据库中的行后更新KEY_ROWID

时间:2013-08-18 13:31:03

标签: android

如何在从数据库中删除行后更新SQLite数据库中的KEY_ROWID号? 情况1: 例如,如果我在数据库中有五行,那么当时最大KEY_ROWID为5。我删除了表中的所有行。然后我添加新行,此时KEY_ROWID不再从1开始,它从6开始。如何重置KEY_ROWID再从1开始。 案例2: 如果我删除第三行,现在表中只有四行,第4行变为3,第5行变为4。 如何在程序中进行这些更改? 我是否需要为这些更改对其进行编程,或者SQLite中是否有任何设置在删除行后更新KEY_ROWID? 感谢

2 个答案:

答案 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);

    }