无法更新JavaFX表

时间:2019-04-05 20:45:34

标签: java

我正在尝试更新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()方法,但是显然这并不理想。

0 个答案:

没有答案