Android:无法从数据库中删除数据

Android:无法从数据库中删除数据,android,sqlite,android-listview,android-sqlite,onlongclicklistener,Android,Sqlite,Android Listview,Android Sqlite,Onlongclicklistener,我想从listview中删除一个特定的行,其中的数据是从数据库填充的。在setOnItemLongClickListener上,我可以从listview中删除数据,但是当我重新启动活动时,我可以看到我删除的行在那里,因为在onCreate()上,我从数据库中获取了数据 以下是我所做的: MainActivity.java db = new AndroidOpenDbHelper(this); showing_history .setOnItemLongClickL

我想从listview中删除一个特定的行,其中的数据是从数据库填充的。在
setOnItemLongClickListener
上,我可以从listview中删除数据,但是当我重新启动活动时,我可以看到我删除的行在那里,因为在
onCreate()
上,我从数据库中获取了数据

以下是我所做的:

MainActivity.java

db = new AndroidOpenDbHelper(this);
    showing_history
            .setOnItemLongClickListener(new OnItemLongClickListener() {

                @Override
                public boolean onItemLongClick(AdapterView<?> arg0,
                        View arg1, final int pos, final long id) {
                    final AlertDialog.Builder b = new AlertDialog.Builder(
                            MainActivity.this);
                    b.setIcon(android.R.drawable.ic_dialog_alert);
                    b.setMessage("Delete this from history?");
                    b.setPositiveButton("Yes",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int whichButton) {

                                    HistoryNamesList.remove(pos);
                                    ((BaseAdapter) mHistoryListAdapter)
                                            .notifyDataSetChanged();
                                    del(pos);
                                }
                            });
                    b.setNegativeButton("No",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int whichButton) {
                                    dialog.cancel();
                                }
                            });

                    b.show();
                    return true;
                }
            });
AndroidPendbHelper.java中的我的删除查询

public boolean deleteTitle(long rowId) {
    SQLiteDatabase db = this.getWritableDatabase();
    return db.delete(TABLE_NAME_HISTORY, ID + "=" + rowId, null) > 0;
}

同样,我可以从listview中删除数据,但不能从数据库中删除。请帮助我解决此问题。

尝试使用db.raw查询而不是db.delete。。。我希望这能帮助您..

试试这段代码

public void deleteTableRow(int rowid) {
        try {
            database.execSQL("DELETE FROM  TableName" + " where columnname="
                    + rowid + ";");
        } catch (Exception e) {
        }
    }

首先,使用以下代码获取所有行id

private int[] mRowId;
    dba.open();
        Cursor cr=dba.fetchData();
        cr.moveToFirst();
int i=0;
while(!cr.isAfterLast())
        {
mRowId[i]==cr.getInt(cr.getColumnIndex("colname"));
i++;
cr.moveToNext();

}
在listview项目上单击

list.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
         db.deleteTitle(mRowId[pos]);
            return true;
        }

public void deleteTitle(int rowid) {
        try {
            database.execSQL("DELETE FROM  TableName" + " where columnname="
                    + rowid + ";");
        } catch (Exception e) {
        }
    }
list.setOnItemLongClickListener(新的OnItemLongClickListener(){
@凌驾
长单击(AdapterView arg0、视图arg1、,
整数arg2,长arg3){
db.deleteTitle(mRowId[pos]);
返回true;
}
public void deleteTitle(int rowid){
试一试{
execSQL(“从TableName中删除”+“其中columnname=”
+rowid+“;”;
}捕获(例外e){
}
}

是否有任何错误、stacktrace、日志?您可能需要查看ContentProviders。发布您的onCreate方法。position不是id。还有,什么是deleteTitle?使用del(id)代替del(pos);完全没有错误,只是得到toast说Delete failed.del(id),对清除数据库数据没有帮助。你用不同的方式说了同样的话,不管怎样,尝试过了,没有像Delted那样获得相同的Toast失败。拉取数据库文件并在Sq Lite浏览器中检查一次。表行是否删除,否则在Sq Lite浏览器中执行此查询一次。是的,所有查询都运行得很好,但我无法在长按按钮时删除。ur r sending pos I thing pos没有您尊重的行id,因此获取与Delted相同的Toast失败,首先您将所有行id保存在一个数组元素中,然后使用pos传递此数组元素,如arr[pos]。请您指导我,我已经尝试了所有的方法。m没有任何效果。使用命令propmpt adb shell检查查询是否正常,但我无法从代码中删除。您是否尝试过使用此SQLITEDABASE db;而不是SQLITEDABASE db=this.getWritableDatabase();其中是fetchData()公共游标fetchData(){try{return database.query(TableName,null,null,null,null);}catch(异常e){return null;}@sai-你能不能正确地格式化你的答案,因为一些变量丢失了,这对我来说变得非常混乱。请你能这样做,这样我就能完成这件事。Sry我不能,这只是我正在做的一个代码片段。这对我来说是个问题。你能帮我一下吗?
list.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
         db.deleteTitle(mRowId[pos]);
            return true;
        }

public void deleteTitle(int rowid) {
        try {
            database.execSQL("DELETE FROM  TableName" + " where columnname="
                    + rowid + ";");
        } catch (Exception e) {
        }
    }