我在基于摇摆的项目中工作,并使用预备语句,但它提供了超出范围的异常,当我使用参数时,并没有放置'?'但只是?然后显示例外" jdbc语法错误检查手册附近'?,?'在第一线"我很困惑发生了什么。检查我的代码是什么问题?
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) {
}
}
}
}
答案 0 :(得分:6)
替换
pst.executeUpdate(sql);
通过
pst.executeUpdate();
准备时,SQL查询已经传递给语句。你不能再次通过它。传递它执行文字SQL查询,而不是准备好的查询。