0

我想使用我的 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();
            }
        });

问题部分是它没有抛出任何类型的异常。请纠正我!或者请告诉我如何调用这个函数?

4

1 回答 1

1

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

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

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

于 2013-08-20T09:44:53.007 回答