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
| 归档时间: |
|
| 查看次数: |
1422 次 |
| 最近记录: |