我想减少股票的价值。我在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());
}
答案 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更新它。