【问题标题】:Substracting value from a field in a database table taken from a textbox从文本框中获取的数据库表中的字段中减去值
【发布时间】:2014-02-24 06:58:48
【问题描述】:

我是 java 新手,在一个 java 项目中,我想在单击“出售”按钮时从数据库表 Item_detail 的“可用”字段中减去一个名为 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 代码是什么,我不明白。请帮忙

【问题讨论】:

    标签: java swing jdbc prepared-statement actionlistener


    【解决方案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();
    

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

    【讨论】:

      【解决方案2】:
      update Item_detail set Available=Available - ? where ...
      

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

      【讨论】:

        【解决方案3】:

        将您的更新查询更改为此

        String sql1="update Item_detail set Available=Available-?    where P_name=? and Manuf_name =? and Model_no=?";
        
         ps.setInt(1,a);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-07-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多