有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我想降低股票的价值。我在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) 个答案

  1. # 1 楼答案

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

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

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

    UPDATE goods SET stocks = stocks - '"+quantPOS.getText()+"' WHERE row_id=123
    
  2. # 2 楼答案

    您需要在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()

  3. # 3 楼答案

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