问题描述
- 如何删除数据库中的数据?
-
当我点击列表视图中的一个选项时,如何删除数据库中的数据?我使用下面的方法来选择列表视图的选项。listview.setOnItemClickListener(new OnItemClickListener(){ public void onItemClick(AdapterView adapterView, View convertView, int position, long id) { AlertDialog.Builder alertDialog = new AlertDialog.Builder(AndroidSpinnerFromSQLiteActivity.this); alertDialog.setTitle("Confirm Delete..."); alertDialog.setMessage("Are you sure you want delete this?"); alertDialog.setIcon(R.drawable.delete); alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int which) { } }); alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); alertDialog.show(); } }); };
数据库类:
public class DatabaseHandler extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "spinnerExample"; private static final String TABLE_LABELS = "labels"; private static final String KEY_ID = "id"; private static final String KEY_NAME = "name"; public DatabaseHandler(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String CREATE_CATEGORIES_TABLE = "CREATE TABLE " + TABLE_LABELS + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT" +")"; db.execSQL(CREATE_CATEGORIES_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_LABELS); onCreate(db); } public void insertLabel(String label){ SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAME, label); db.insert(TABLE_LABELS, null, values); db.close(); } public List<String> getAllLabels(){ List<String> labels = new ArrayList<String>(); String selectQuery = "SELECT * FROM " + TABLE_LABELS; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(selectQuery, null); if (cursor.moveToFirst()) { do { labels.add(cursor.getString(1)); } while (cursor.moveToNext()); } cursor.close(); db.close(); return labels; } }
解决方案
在你的数据库类的代码中添加一个方法。如果你想删除所有的原始表单,使用
db.execSQL("DELETE from "+Table_Name);
如果想删除表格中特定的行,使用
db.delete(Table_Name, "Raw_Field_Name" + "='" + Raw_field_value+"'", null);
列表视图项的点击事件使用
Listview lv;
//on create method
lv = (ListView) findViewById(R.id.list_contact_name);
lv.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0, View v, int position,
long id) {
// call DELETE method here
}
});
解决方案二:
http://blog.csdn.net/zlqqhs/article/details/8607849
在单击事件中调用delete方法
解决方案三:
在 Helper 类中添加:
public boolean deleteData(String name)
{
SQLiteDatabase db=getWritableDatabase();
return db.delete(TABLE_NAME, KEY_NAME+"= ?", new String[]{name})>0;
}
用标签的名字调用这个方法。你会在列表视图 OnItemClickListener 中获得 onItemClick 方法。
时间: 2025-01-30 05:55:50