我正在尝试使用 java servlet 和 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);
}
}
我遇到的问题实际上是从 Controller 类插入数据。我尝试从表单获取请求参数,然后将它们存储到对象中,然后从 CheckoutDb 类调用 insert 方法,但它不会将任何数据插入到表中。任何帮助将不胜感激。如果需要更多代码来显示,我会根据需要提供。谢谢。
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 ) 可以为您提供有关如何使用提交/回滚管理事务的详细信息。
关于java - 如何使用java mvc向数据库插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29182860/