如何在sqlite中使用删除功能

时间:2013-08-20 09:37:29

标签: android database sqlite android-sqlite

我想使用我的SQLHandler的删除功能

public void removeProduct(int id) {
        try {
            String a;
            a = Integer.toString(id);
            getWritableDatabase().delete(TABLE_INCOME, KEY_ID + " = ?", new String[] { a });

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

我在查看活动

中使用它
viewHolder.txt_price.setText( Long.toString(_incomelist.get(position).getPrice()).trim());
viewHolder.txt_type.setText(_incomelist.get(position).getType().trim());
viewHolder.txt_date.setText(_incomelist.get(position).getDate().trim());
viewHolder.txt_desc.setText(_incomelist.get(position).getDescription().trim());
viewHolder.txt_pmode.setText(_incomelist.get(position).getPaymode().trim());

final int temp = position;
(convertView.findViewById(R.id.imageButton2))
        .setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {

                AlertDialog.Builder alertbox = new AlertDialog.Builder(
                        ViewContact.this);
                alertbox.setCancelable(true);
                alertbox.setMessage("Are you sure you want to delete ?");
                alertbox.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

                            public void onClick(DialogInterface arg0, int arg1) {
                                try{
                                db.removeProduct(temp);
                                ViewContact.this.onResume();
                                Toast.makeText(getApplicationContext(),"Deleted..",Toast.LENGTH_SHORT).show();
                                }
                                catch(Exception e)
                                {
                                    e.printStackTrace();
                                }
                            }

                        });
                alertbox.setNegativeButton("No",
                        new DialogInterface.OnClickListener() {
                            public void onClick(
                                    DialogInterface arg0, int arg1) {

                            }
                        });
                alertbox.show();
            }
        });

问题部分是这样,它不会抛出任何类型的异常。请纠正我! OR 请告诉我如何调用此功能?

1 个答案:

答案 0 :(得分:1)

它不会抛出异常,因为delete不会抛出异常。相反,它返回已删除行的数量。在你的情况下,可能是0。

问题是您使用适配器中的位置而不是实际ID。

我假设您的代码位于onItemClick?在这种情况下,请使用long id参数而不是位置。