title: PreparedStatement: How to insert data into multiple tables using JDBC
body: <p>Could somebody tell me whether the first <code>stmt.close();</code> required in the following JDBC code, for executing two different SQL queries against two different tables?</p>
  
  <pre><code>public class MyService {
      private Connection connection = null;
  
      public void save(Book book) {
          try {
              Class.forName("com.mysql.jdbc.Driver");
              connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password"); 
  
              PreparedStatement stmt = connection.prepareStatement("INSERT INTO PUBLISHER (CODE, PUBLISHER_NAME) VALUES (?, ?)");
              stmt.setString(1, book.getPublisher().getCode());   
              stmt.setString(2, book.getPublisher().getName());           
              stmt.executeUpdate();
  
              stmt.close(); //1
  
              stmt = connection.prepareStatement("INSERT INTO BOOK (ISBN, BOOK_NAME, PUBLISHER_CODE) VALUES (?, ?, ?)");
              stmt.setString(1, book.getIsbn());  
              stmt.setString(2, book.getName());
              stmt.setString(3, book.getPublisher().getCode());
              stmt.executeUpdate();
  
              stmt.close(); //2       
          } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } 
          finally { connection.close(); }         
      }
  }
  </code></pre>