如何在数据库中重写项目而不是创建新项目

时间:2015-08-26 09:57:54

标签: java android sqlite android-listview

我正在使用sqlite数据库,如果我在我的数据库中添加现有项目,我希望它覆盖并在数量上加1,我知道这是可能的,但我不知道如何。请有人帮助我,如果有人这样做我会非常感激(我是编程新手)这是我的项目*

这是我向数据库添加项目并在listview中显示的窗口

public class pop_up extends Activity {
    int qty;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pop_up);

        EditText quantity = (EditText)findViewById(R.id.quantity);

        quantity.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                try{
                    qty = 1;
                }catch(Exception e){

                }

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                try{
                    qty = Integer.valueOf(s.toString()).intValue();
                }catch(Exception e){

                }
            }
        });

        Intent getpop_up = getIntent();

        final int price = getpop_up.getIntExtra("passedprice", 0);
        final String name = getpop_up.getStringExtra("passedname");



        Button add = (Button) findViewById(R.id.add);




        TextView menuprice = (TextView)findViewById(R.id.menuprice);
        String initialprice = String.valueOf(price);
        menuprice.setText(initialprice);

        TextView menuname = (TextView)findViewById(R.id.menuname);
        String currentname = String.valueOf(name);
        menuname.setText(currentname);


        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast toast;
                int tprice = ((price)*(qty));

                SQLiteDatabase db = openOrCreateDatabase("Orders.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
                MDB mdb = new MDB(getApplicationContext(), "Orders.db", null, 1);
                db = mdb.getWritableDatabase();
                ContentValues cv = new ContentValues();
                cv.put("Food", name);
                cv.put("Price", tprice);
                cv.put("Quantity", qty);
                db.insert("OrderedList", null, cv);

                toast=Toast.makeText(getApplicationContext(), "Added successfully", Toast.LENGTH_SHORT);

                finish();
                toast.show();
            }


        });

        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);

        int width=dm.widthPixels;
        int height = dm.heightPixels;

        getWindow().setLayout((int) (width),(int) (height*.6));



    }
}

这是我的listview适配器

public class ListView_Adapter extends ArrayAdapter<String> {
    private final Context context;
    private String[] column1;
    private double[] column2;
    private int[] column3;

    public ListView_Adapter(Context context, String[] column1, double[] column2, int[] column3) {
        super(context, R.layout.list_adapter, column1);
        this.context = context;
        this.column1 = column1;
        this.column2 = column2;
        this.column3 = column3;

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.list_adapter, parent, false);
        }
        TextView t1 = (TextView) convertView.findViewById(R.id.t1);
        TextView t2 = (TextView) convertView.findViewById(R.id.t2);
        TextView t3 = (TextView) convertView.findViewById(R.id.t3);

        t1.setText(column1[position]);
        t2.setText("₱" + column2[position]);
        t3.setText("" + column3[position]);
        return convertView;
    }
} 

1 个答案:

答案 0 :(得分:3)

对于我的回答,我假设您熟悉数据库连接的基本概念,并知道如何从数据库查询中获取结果并执行更新查询。

此外,我假设你有一个sqlite数据库,从现在开始有一个名为table_name的表,以及具有唯一item_name的项目。

因此,您希望在数据库中插入项目,如果它们已经存在,请在表格中增加quantity

检查数据库中是否已存在该项目

在插入新项目之前,可以更新数据库中的项目之前,应检查它是否已存在。 (假设要插入的项目具有名称name

您可以使用如下选择查询执行此操作:

SELECT * FROM table_name WHERE item_name = 'name'

执行此查询后,您将获得可以检查的结果。此后您将执行两项操作:

  • 如果查询结果为空,您知道该项目尚不存在,并且您插入的初始数量为1的新项目

  • 否则您知道您只想更新其数量。

更新项目数量(如果已存在)

现在,在您知道数据库中已存在某个项目之后,您只需更新其数量即可。这可以通过更新查询来完成:(假设要插入的项目具有名称name

UPDATE table_name SET Quantity = Quantity + 1 WHERE item_name = 'name'