如何在SQlite Android中自动减少主键值

Has*_*ani 0 sqlite android sqliteopenhelper android-sqlite

我在android SQLite中有一个表,我试图弄清楚如何重置KEY_ID,我读到:DELETE FROM tablename应该删除所有内容并将自动增量字段重置为0但是当我这样做时它只是删除数据.插入新记录后,自动增量会在删除之前从中断处继续.我已经实现了一个longitemclicklistner列表,它获取了位置,我想从列表中删除特定项目.这是我的代码

public void deleteContact(Contact contact) {
        SQLiteDatabase db = this.getWritableDatabase();
        getWritableDatabase().delete(TABLE_CONTACTS, KEY_ID + " = ?",
                new String[] { String.valueOf(contact.getID()) } );


        db.close();
    }
Run Code Online (Sandbox Code Playgroud)

这是代码 onlongclicklistner

 public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                     int pos, long id) {
                // TODO Auto-generated method stub

                Log.v("long clicked","pos"+" "+pos);

                final int p=pos+1;

                final AlertDialog.Builder b = new AlertDialog.Builder(MainActivity.this);
                b.setIcon(android.R.drawable.ic_dialog_alert);
                b.setMessage("Are you sure you want to DELETE this Entry?");
                b.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                           // continue with delete

                            db.getWritableDatabase();
                            db.deleteContact(db.getContact(p));
                            Intent i = new Intent(MainActivity.this,MainActivity.class);
                            startActivity(i);
                        }
                });
                b.setNegativeButton("No", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            // do nothing
                        }
                });

                b.show();

         }
Run Code Online (Sandbox Code Playgroud)

问题是,id1创建然后id2创建但是当我删除id2并创建一个新的联系人时,它得到了id3.我希望它得到id2

laa*_*lto 5

这是一个特点AUTOINCREMENT.要重新使用密钥,请更改列定义

INTEGER PRIMARY KEY AUTOINCREMENT
Run Code Online (Sandbox Code Playgroud)

只是

INTEGER PRIMARY KEY
Run Code Online (Sandbox Code Playgroud)

进一步阅读:http://sqlite.org/autoinc.html