我正在创建一个图书馆程序,当学生借书时,该书将从图书馆表中删除并添加到借书表中。我的查询给了我一个未初始化的当前语句至少一个参数的异常
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
Connection con=CreateDB.getConnection();
String query3="insert into borrowedbooks values(?,?,?,?,?)";
PreparedStatement statement=con.prepareStatement(query3);
statement.setString(1, regNo.getText());
statement.setString(2, names.getText());
String value3=sClass.getSelectedItem().toString();
statement.setString(3, value3);
statement.setString(4, ((JTextField)date.getDateEditor().getUiComponent()).getText());
statement.setString(5, title.getText());
statement.execute();
String query4="update bookentry set copies=copies-1 where title=?";
Statement st=con.createStatement();
st.executeUpdate(query4);
JOptionPane.showMessageDialog(null,"Book lent Successfully");
}
catch(Exception ex){
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
答案 0 :(得分:-1)
在此LOC中
String query3="insert into borrowedbooks values(?,?,?,?,?)";
您有5个参数,并在以下LOC中按1逐个填写它们
statement.setString(1, regNo.getText());
statement.setString(2, names.getText());
String value3=sClass.getSelectedItem().toString();
statement.setString(3, value3);
statement.setString(4, ((JTextField)date.getDateEditor().getUiComponent()).getText());
statement.setString(5, title.getText());
但是在Update查询中,您也有一个参数,但是没有在其中添加任何值。这就是导致此问题的原因。使用先前已经创建的语句,而无需创建另一个。您尝试运行的语句称为准备语句。尝试运行下面的书面代码。
String query4="update bookentry set copies=copies-1 where title=?";
statement=con.prepareStatement(query4);
statement.setString(1, title.getText());
statement.executeUpdate();
答案 1 :(得分:-1)