Я пытаюсь вставить данные в базу данных с помощью сервлетов Java и mvc. У меня есть класс под названием CheckoutDb, который использует пул соединений и готовые инструкции для вставки данных.
public class CheckoutDb {
public static int insert(Checkout checkout) {
ConnectionPool pool = ConnectionPool.getInstance();
Connection connection = pool.getConnection();
PreparedStatement ps = null;
String query
= "INSERT INTO Checkout (FirstName, LastName, EmailAddress, "
+ "BookTitle, DueDate) "
+ "VALUES (?, ?, ?, ?, ?)";
try {
ps = connection.prepareStatement(query);
ps.setString(1, checkout.getFirstName());
ps.setString(2, checkout.getLastName());
ps.setString(3, checkout.getEmailAddress());
ps.setString(4, checkout.getBookTitle());
ps.setString(5, checkout.getFormattedDate());
return ps.executeUpdate();
} catch (SQLException e) {
System.out.println(e);
return 0;
} finally {
DBUtil.closePreparedStatement(ps);
pool.freeConnection(connection);
}
}
Проблема, с которой я, похоже, сталкиваюсь, фактически вставляет данные из класса контроллера. Я попытался получить параметры запроса из формы и затем сохранить их в объекте, а затем вызвать метод insert из класса CheckoutDb, но он не будет вставлять какие-либо данные в таблицу. Любая помощь будет принята с благодарностью. Если для отображения требуется больше кода, я при необходимости предоставит вам. Благодарю.
private String doCheckout(HttpServletRequest request,
HttpServletResponse response) {
String firstName= request.getParameter("first_name");
String lastName= request.getParameter("last_name");
String emailAddress= request.getParameter("email_address");
String bookTitle= request.getParameter("book_title");
Checkout checkout=new Checkout();
Date date= checkout.getDueDate();
//TODO: Implement code to check out the book here.
checkout=new Checkout(firstName,lastName,emailAddress,bookTitle,date);
CheckoutDb.insert(checkout);
return "/thankyou.jsp";
}
Решение. После выдачи ps.executeUpdate() вам необходимо указать connection.commit(). Это сделает изменения постоянными в базе данных, и вы сможете увидеть изменения в базе данных с помощью другого соединения. Учебник JDBC (http://docs.oracle.com/javase/tutorial/jdbc/TOC.html) может предоставить вам подробную информацию о том, как управлять транзакциями с использованием commit/rollback.