删除单个SQLite行 [英] Deleting a single SQLite row

查看:71
本文介绍了删除单个SQLite行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用列表项的 onLongClick 删除一行,但有时它会删除该行,有时不会删除该行.也许我给它传递了错误的ID,但我没有得到真正的问题.

I am trying to delete a single row using onLongClick of list item but sometime it deletes the row and sometimes doesn't. Maybe I am passing the wrong id to it I don't getting what actually problem is.

我尝试了一些代码,但从最近两天开始尝试,但是无法解决.

I have tried some code and I am trying from last 2 days but unable to resolve this.

下面是我的代码.

@Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, final long id) {
        AlertDialog.Builder alert = new AlertDialog.Builder(FavouriteListActivity.this);
        alert.setMessage("Do you want to unfavorite selected item ?");
        alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.i("===========", "Position === " + position);
                Log.i("===========", "long id === " + id);
                deleteMethod(id);
                showFavouriteList();
                dialog.cancel();
            }
        });
        alert.setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        alert.show();
        return true;
    }

和deleteMethod

And deleteMethod

private void deleteMethod(long Id) {
        try {
            long shId = Id + 1;
            SQLiteDatabase db = OpenHelper.getDataHelper(getApplicationContext());
            String query = "DELETE FROM " + LocalDatabase.FAVORITE_LIST.TABLE_FAVOURITE_LIST + " WHERE " + LocalDatabase.FAVORITE_LIST.FAVOURITE_LIST_ID + " = " + shId;
            Log.i("QUERY", "" + query);
            db.execSQL(query);
            db.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

虽然我没有收到任何错误,但是它没有从数据库或列表视图中删除项目

I am not getting any error, though, but it is not deleting item from database or from listview

推荐答案

首先在模型类中创建一个id变量,并为此生成getter和setter:

First make a id variable in your model class and generate getter and setter for that:

public static final String PRIMARY_ID="_id";

现在将primary_id设置为从光标建模:

Now set the primeary_id to model from the cursor:

if (cursor.moveToFirst()) {
            do {
                model = new FavouriteListVo(lngID, strName);
                  model.setStrName(cursor.getString(cursor.getColumnIndex(LocalDatabase.FAVORITE_LIST.FAVOURITE_LIST_NAME)));
model.setPrimId(cursor.getString(cursor.getColumnIndex(LocalDatabase.FAVORITE_LIST.PRIMARY_ID)));
                arrayListFav.add(model);
            } while (cursor.moveToNext());
        }

现在要删除该行,请使用以下主键:

Now for deleting that row use this primary key:

 public void onClick(DialogInterface dialog, int which) {
            String id=model.getPrimId();
            deleteMethod(id);
            showFavouriteList();
            dialog.cancel();
        }

删除功能与您的删除功能完全相同,正如我在评论中提到的那样,问题出在id而不是您的删除功能:

The delete function is exactlu same as yours, as I mentioned in comment that the problem is with id not your delete function:

private void deleteMethod(long Id) {
    try {
        long shId = Id + 1;
        SQLiteDatabase db = OpenHelper.getDataHelper(getApplicationContext());
        String query = "DELETE FROM " + LocalDatabase.FAVORITE_LIST.TABLE_FAVOURITE_LIST + " WHERE " + LocalDatabase.FAVORITE_LIST.FAVOURITE_LIST_ID + " = " + shId;
        Log.i("QUERY", "" + query);
        db.execSQL(query);
        db.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这篇关于删除单个SQLite行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆