listview-如何删除数据库中的数据?

问题描述

如何删除数据库中的数据?

当我点击列表视图中的一个选项时,如何删除数据库中的数据?我使用下面的方法来选择列表视图的选项。

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 方法。

时间: 2024-08-30 12:18:53

listview-如何删除数据库中的数据?的相关文章

sqlite删除数据库中的数据时偶尔会出现错误

问题描述 sqlite删除数据库中的数据时偶尔会出现错误 java.lang.IllegalStateException: Cannot perform this operation because the connection pool has been closed. 求助,connection pool 是啥啊,求大神指教. 解决方案 如果确定不是连接被关闭,那还有可能就是多线程访问sqlite,sqlite数据库是单线程操作的,那么当N多个Thread同时调用的时候,可能报这错误.这也就

保存数据库中其他对象不变,删除数据库中所有数据的实现方法

对象|数据|数据库 原帖内容:怎样把数据库中所有数据删除,然后把所有的自动增量复位?表太多,无法手工完成.http://community.csdn.net/Expert/topic/3094/3094555.xml?temp=.2920954 /*--原本打算这样--先禁用所有外键约束exec sp_msforeachtable "alter table ? nocheck CONSTRAINT all"--然后删除数据exec sp_msforeachtable "tru

Java删除数据库中的数据

1:删除数据库中数据表中的数据同样也是一个非常用的技术,使用executeUpdate()方法执行用来做删除SQL的语句可以删除数据库表中的数据 2:本案例使用Statement接口中的executeUpdate()方法,删除数据库中users表中id为1的用户信息   1 package com.ningmeng; 2 3 import java.sql.*; 4 /** 5 * 6 * @author biexiansheng 7 * 8 */ 9 public class Test06 {

MySQL 删除数据库中重复数据方法小结_Mysql

刚开始,根据我的想法,这个很简单嘛,上sql语句 delete from zqzrdp where tel in (select min(dpxx_id) from zqzrdp group by tel having count(tel)>1); 执行,报错!!~!~ 异常意为:你不能指定目标表的更新在FROM子句.傻了,MySQL 这样写,不行,让人郁闷. 难倒只能分步操作,蛋疼 以下是网友写的,同样是坑爹的代码,我机器上运行不了. 1. 查询需要删除的记录,会保留一条记录. select

删除数据库中重复数据的几个方法

数据|数据库|重复 方法一 declare @max integer,@id integerdeclare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1open cur_rowsfetch cur_rows into @id,@maxwhile @@fetch_status=0beginselect @max = @max -1set rowcount @maxdele

为什么我用hibernaetemplate.delete方法无法删除数据库中的数据

问题描述 在我的ssh架构下有一张部门信息表department,现在我想删除里面的数据,dao的实现方式如下:public void delete(Department department) { //System.out.println(department.getId());this.hibernateTemplate.delete(department);}添加数据是没有问题的,部署调试时,打印主键值也没有问题,通过在jsp页面地址中手动传值,日志显示如下:Hibernate: sele

删除数据库中重复数据的几个方法_MsSql

方法一 declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete

SQL注入的问题,已经删除数据库中的 数据了,但如何写呢。我写了SQL 可是执行后没有效果+==========

问题描述 http://*******students/newsView.asp?id=30';insertintonews(id)values('222');-- 解决方案 解决方案二:系统提示:MicrosoftVBScript编译器错误错误'800a03f6'缺少'End'/iisHelp/common/500-100.asp,行242MicrosoftOLEDBProviderforODBCDrivers错误'80040e21'ODBC驱动程序不支持所需的属性./students/new

如何删除数据库中的冗余数据(翻译)

数据|数据库 作为数据库的开发者,我们经常面临着要找出及删除数据库中冗余数据的任务,如果数据库中有大量的冗余数据(占总数的百分比太多),数据的精确性和可靠性将受到影响,同时也影响着数据库的性能,那么如何解决这个问题呢?下面我将探讨关于这个问题的这个解决方案,oracle也为我们提供了一个解决方案,但是Oracle提供的解决方案不够完美,遇到大批量数据那个解决方案工作起来很慢 应该怎么删除冗余数据呢?在这里我们应用一个PL/SQl方案(一个自定义的存储过程)或者一个SQL语句的解决方案(使用一个分