我是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代码是什么,我无法理解。请帮忙
答案 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。