【发布时间】:2013-09-19 11:04:47
【问题描述】:
我在 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();
}
这是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();
}
问题是,id1 被创建,然后id2 被创建,但是当我删除id2 并创建一个新联系人时,它会得到id3。我希望它得到id2
【问题讨论】:
-
使用 Truncate
而不是 DELETE 语句,这将删除您的数据并将自动增量设置为 0。 -
@Vigbyor TRUNCATE 在 sqlite 中不可用。
标签: android android-sqlite sqliteopenhelper sqlite