从文本框中获取的数据库表中的字段中减去值

时间:2014-02-24 06:58:48

标签: java swing jdbc prepared-statement actionlistener

我是java的新手,在java项目中,我想在点击“sell”按钮并自动更新表时,从数据库表Item_detail的“Available”字段中减去名为Quantity(q_field)的文本框值。我写了一些代码,但它不起作用。我的代码是:

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {                                         

if(!p_field.getText().isEmpty() && !b_field.getText().isEmpty() && !m_field.getText().isEmpty() && !sell_field.getText().isEmpty() && !c_field.getText().isEmpty()){
int a=Integer.parseInt(q_field.getText().trim());

String sql1="update Item_detail set Available=Available-'a'    where P_name=? and Manuf_name =? and Model_no=?";
String sql2="insert into Sell (`S_id`,`P_name`,`Manuf_name`,`Model_no`,`Date`,`Quantity`,`S.p`,`Cost_price`) values(?,?,?,?,?,?,?,?)";
try{
    pst=(PreparedStatement) con.prepareStatement(sql1);

    pst.setString(1, p_field.getText());
    pst.setString(2, b_field.getText());
    pst.setString(3, m_field.getText());
    pst.setString(4, q_field.getText());
    pst.executeUpdate();

    JOptionPane.showMessageDialog(null, "Product sold  successfully");
    update_table();

    }catch(Exception e){
    JOptionPane.showMessageDialog(null, e);

'sql1'的正确sql代码是什么,我无法理解。请帮忙

3 个答案:

答案 0 :(得分:1)

update Item_detail set Available=Available - ? where ...

a的值是查询的参数,就像其他参数一样。顺便说一句,您将4个不同的参数绑定到语句,并且您的查询只有3个参数(?占位符)

答案 1 :(得分:1)

将更新查询更改为此

String sql1="update Item_detail set Available=Available-?    where P_name=? and Manuf_name =? and Model_no=?";

 ps.setInt(1,a);

答案 2 :(得分:1)

sql1应为:

String sql1="update Item_detail
                   set Available=Available-?
             where
                   P_name=? 
               and Manuf_name =?
               and Model_no=?";

并将值设置为pst查询以包含变量a的值,如下所示:

pst=(PreparedStatement) con.prepareStatement(sql1);

pst.setInt(1, a);
pst.setString(2, ...
...  
pst.executeUpdate();

但请确保您在查询中仅为该数量的palce持有者设置了值。否则会有占位符计数不匹配,并且会抛出SQLException。