如何减少数据库表行整数值

时间:2016-10-31 14:44:36

标签: java mysql sql swing

我想减少股票的价值。我在java中使用jbutton并使用此代码,但问题是它减少了我希望减少一个股票值的所有整数。

如果您有任何疑问,请询问。

 try{
        Class.forName(Driver);
        Connection con = DriverManager.getConnection(url,user,pass);
        String sql = "UPDATE goods SET stocks = stocks - '"+quantPOS.getText()+"'";

        PreparedStatement pst = con.prepareStatement(sql);
        pst.executeUpdate();
         JOptionPane.showMessageDialog(this, "Updated Succesfully");
    }catch(Exception e){
        JOptionPane.showMessageDialog(this, e.getMessage());
    }

3 个答案:

答案 0 :(得分:1)

好。您的问题是它会降低所有整数,但您希望减少一个股票值。这是因为你的SQL语句。

UPDATE goods SET stocks = stocks - '"+quantPOS.getText()+"'

以上查询的作用是,它会更新stocks value所有行的Goods table。因此,如果您只想更新一个股票价值,则必须使用WHERE clause并指定该特定行ID(使用任何唯一列,例如主键列)

UPDATE goods SET stocks = stocks - '"+quantPOS.getText()+"' WHERE row_id=123

答案 1 :(得分:1)

您需要在SQL语句中添加where子句。

您还需要将文本字段中的文本转换为数字。

另外,为您的SQL使用PreparedStatement。它将使语句编写更容易,并且不太可能导致SQL语法错误:

int value = stocks - Integer.parseInt( quantPos.getText() );

String sql = "UPDATE Goods SET Stocks = ? WHERE ID = ?";

PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString( 1, value );
stmt.setString( 2, theIdHere );
stmt.executeUpdate();

此外,在将表命名为数据库中的列时,请遵循约定。这些值应以大写字符开头。     stmt.close();

答案 2 :(得分:0)

在该行中创建一个选择按钮,然后选择在特定文本框的更新面板中获取该行的所有值,然后使用更新查询sql更新它。