我正在尝试更新JavaFX表中的一行。当我单击其中的一行时,它使我可以选择单击更改场景的按钮,以便在其中更新信息。
我能够成功连接到数据库并将信息从数据库发送到文本字段。进行必要的更改后,我单击另一个按钮,将我带回到表中,但该行未更新。
下面您将看到负责更新表的方法:
公共无效updateDB()抛出SQLException {
Connection conn = null;
PreparedStatement preparedStatement = null;
try {
//1. Connect to the database
conn = DriverManager.getConnection("jdbc:mysql://sql9.freesqldatabase.com:3306/sql9282182?useSSL=false", "sql9282182", "4MdIdS8AlJ");
//2. Create a string that holds the query with "?" as user inputs
String sql = "UPDATE books SET title = ?, author = ?, genre = ?, publishingYear = ?, imageFile = ?"
+ " WHERE bookID = ?";
//3. Prepare the query
preparedStatement = conn.prepareStatement(sql);
//4. Bind the values to the parameters
preparedStatement.setString(1, title);
preparedStatement.setString(2, author);
preparedStatement.setString(3, genre);
preparedStatement.setInt(4, publishingYear);
preparedStatement.setString(5, imageFile.getName());
preparedStatement.setInt(6, getBookID()); //<-- **I believe my problem is here**
preparedStatement.executeUpdate();
}
catch (SQLException e) {
System.err.println(e.getMessage());
}
finally {
if (preparedStatement != null) {
preparedStatement.close();
}
if (conn != null) {
conn.close();
}
}
}
如果我实际上在这里硬编码bookID ...
preparedStatement.setInt(6,getBookID());
它可以使用,而不是使用getBookID()方法,但是显然这并不理想。