Java 减少一个数据库表中的一项并将其添加到另一个表中
我正在创建一个图书馆程序,当学生借书时,它将从图书馆表中删除并添加到借书表中。我的查询为当前语句os uninitialized提供了至少一个参数的异常Java 减少一个数据库表中的一项并将其添加到另一个表中,java,mysql,Java,Mysql,我正在创建一个图书馆程序,当学生借书时,它将从图书馆表中删除并添加到借书表中。我的查询为当前语句os uninitialized提供了至少一个参数的异常 private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try{ Con
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());
}
}
在这个地方
String query3="insert into borrowedbooks values(?,?,?,?,?)";
您有5个参数,并在以下LOC中逐个填写
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());
但是在更新查询中,您也有一个参数,但没有向其中添加任何值。这就是造成问题的原因。使用先前已创建的语句,无需创建另一个语句。您尝试运行的语句称为“准备语句”。尝试运行下面编写的代码
String query4="update bookentry set copies=copies-1 where title=?";
statement=con.prepareStatement(query4);
statement.setString(1, title.getText());
statement.executeUpdate();
这个设计很差。请重新设计数据库结构。下面给出了一个例子。如果某个学生得到一本书,相关的学生id、图书id和日期将作为新记录添加到借阅图书表中
这是一个糟糕的设计。重新思考您的方法这不是代码审查。如果您想查看代码,应该转到。