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
这是一个特点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