gpt4 book ai didi

java - Java中的更新语句

转载 作者:行者123 更新时间:2023-12-04 16:19:37 25 4
gpt4 key购买 nike

我有以下代码来更新记录。代码可以编译,但是它会跳过 try 语句中的所有内容,并在 catch 语句中显示错误消息。我不确定我错过了什么,因为它没有显示任何类型的语法错误。

try {           
PreparedStatement st = db.con.prepareStatement("UPDATE item SET Name = ?, Size = ?, Price = ?, WHERE ItemCode = ?");
st.setString(1, textArea_Code.getText());
st.setString(2, textArea_name.getText());
st.setString(3, textArea_size.getText());
st.setString(4, textArea_price.getText());
st.executeUpdate();

JOptionPane.showMessageDialog(frame, "Updated");

} catch (SQLException e ) {
JOptionPane.showMessageDialog(frame, "update not successful");
}

最佳答案

您是否尝试过将 UPDATE 语句更改为如下内容:

"UPDATE item SET Name = ?, Size = ?, Price = ? WHERE ItemCode = ?"

我拿出了最后的 , (逗号)在 Price = ? 之后因为它可能与 SQL 的其余部分发生冲突。

编辑:

此外,您可能需要重新排列 textArea_Code.getText()行作为准备好的语句的最后一个值。否则, 商品代码 值可能与 ? 的顺序不匹配占位符(目前看来 textArea_price.getText() 正被用作 ItemCode 的值……这对于更新的内容可能很危险!)

相反,像这样的东西呢:
PreparedStatement st = db.con.prepareStatement("UPDATE item SET Name = ?, Size = ?, Price = ? WHERE ItemCode = ?");
st.setString(1, textArea_name.getText());
st.setString(2, textArea_size.getText());
st.setString(3, textArea_price.getText());
st.setString(4, textArea_Code.getText());
st.executeUpdate();

这样,所有的 ?占位符与设置的值正确匹配:

Name: st.setString(1, textArea_name.getText());
Size: st.setString(2, textArea_size.getText());
Price: st.setString(3, textArea_price.getText());
ItemCode: st.setString(4, textArea_Code.getText());



这是因为参数需要与占位符的顺序相同(参见 this documentation 了解更多信息。)

关于java - Java中的更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9639003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com