我正在尝试使用JBDC更新我的SQL数据库。但是由于某种原因,查询似乎没有执行。我在登录屏幕和菜单中使用的是Jframe GUI。
我想做的是获取在登录屏幕中输入的帐号,然后将用户输入的金额减去当前余额后再减去,然后将帐号和重命名金额传递给数据库,更新帐户余额。
这是某些值的声明部分:
public class MainMenu extends javax.swing.JFrame
{
private Login log = new Login();
private Account acc = null;
private String accnum = log.getacctfld();
Connection con = new DBConnection().connect();
}
这是提取按钮的代码:
private void withdrawActionPerformed(java.awt.event.ActionEvent evt)
{
String input = amountentered.getText();
if ("".equals(input))
{
message.setText("Enter amount to perform operation");
return;
}
Double amt = Double.parseDouble(input);
if (amt > acc.getAmount() || amt <= 0.0)
{
message.setText("INVALID AMOUNT. PLEASE TRY AGAIN.");
return;
}
double bal = acc.getAmount() - amt;
String command = "UPDATE user_atm SET balance =? WHERE accno =?";
try
{
PreparedStatement ps = con.prepareStatement(command);
ps.setDouble(1, bal);
ps.setString(2, accnum);
ps.executeQuery(); // I think the query isn't executing
ps.executeUpdate();
}
catch(Exception e)
{
}
acc.setAmount(bal);
balance.setText(bal + "");
amountentered.setText("");
}
更新:
accnum
尚未初始化。我试图从登录屏幕传递JTextField的值。但这没有用。因此,我将帐号传递给了设置器,然后将accnum
分配给了获取器,现在它可以正常工作了。
我还删除了ps.executeQuery();
答案 0 :(得分:0)
您必须使用executeUpdate()
而不是executeQuery()
据我了解,您要更新数据库中的数据不是这种情况吗?
executeQuery()
与SELECT
语句一起使用来获取行而不是udate。
所以删除ps.executeQuery();