我在基于 swing 的项目中工作并使用准备好的语句,但它会给出异常,例如超出范围,并且当我使用参数并且不输入“?”时但简单吗?然后显示异常,如“ jdbc syntax error check the manual near '?,?'在第一行“我很困惑发生了什么。检查我的代码有什么问题吗?
private void AddActionPerformed(java.awt.event.ActionEvent evt) {
if (((JTextField) chose.getDateEditor().getUiComponent()).getText() == null) {
String sql = "INSERT INTO expance1 ( Breakfast,Date) VALUES (?,?)";
} else {
String sql = "INSERT INTO expance1 ( Breakfast,Date) VALUES (?,?)";
try {
pst = conn.prepareStatement(sql);
pst.setString(1, breakfast.getText());
pst.setString(2, ((JTextField) chose.getDateEditor().getUiComponent()).getText());
pst.executeUpdate(sql);
JOptionPane.showMessageDialog(null, "insert sucessfully");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
} finally {
try {
rs.close();
pst.close();
} catch (Exception e) {
}
}
}
}
最佳答案
替换
pst.executeUpdate(sql);
通过
pst.executeUpdate();
SQL 查询在准备语句时已经传递给语句。你不能第二次通过它。传递它会执行文字 SQL 查询,而不是准备好的查询。
关于java - Mysql异常“超出范围”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25905835/