import java.io.*; import java.util.*; import java.text.DateFormat; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class CheckoutServlet extends HttpServlet implements SingleThreadModel { private String name; private Integer total; private Integer balance; private ArrayList items; private ArrayList prices; private String item; private int price; private java.sql.Date date; private Statement st; private PreparedStatement stmt; private Connection con; private String URL = "jdbc:odbc:MagicShop"; private String username = ""; private String password = ""; public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); name = (String)session.getValue("name"); total = (Integer)session.getValue("total"); balance = (Integer)session.getValue("balance"); items = (ArrayList)session.getValue("items"); prices = (ArrayList)session.getValue("prices"); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (Exception e) { System.out.println("Failed to load JDBC/ODBC driver."); return; } st = null; stmt = null; con=null; try { con = DriverManager.getConnection (URL,username,password); st = con.createStatement(); stmt = (PreparedStatement)con.createStatement(); } catch (Exception e) { System.err.println("problems connecting to "+URL); } try { con.setAutoCommit( false ); int size = items.size(); if(size != 0) { date = new java.sql.Date((new java.util.Date()).getTime()); stmt = con.prepareStatement("INSERT INTO sales ([Date], Customer) values (?, ?)"); stmt.setDate(1, date); stmt.setString(2, name); stmt.execute(); ResultSet result = st.executeQuery("SELECT Invoice FROM Sales ORDER BY Invoice DESC;"); result.next(); int invoice = result.getInt("Invoice"); for (int i = 0;i < size;i++) { item = items.get(i).toString(); price = Integer.parseInt(prices.get(i).toString()); stmt = con.prepareStatement("INSERT INTO InvoiceDetails(Invoice, Item, Price) values (?, ?, ?)"); stmt.setInt(1, invoice); stmt.setString(2, item); stmt.setInt(3, price); stmt.execute(); } con.commit(); } session.invalidate(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("
| " + item + " | " + price + " |
| Total: | " + total + " |
| Balance: | " + balance + " |
Thank you for shopping at Wizards Keep " + name + "!" + "
" +
"");
out.close();
}
catch (Exception e) {
System.err.println("problems with SQL sent to "+URL+": "+e.getMessage());
try {
con.rollback();
}
catch( SQLException e2 ) {
System.out.println( "couldn't roll back" );
}
}
finally {
try {
con.close();
}
catch(SQLException e3) {
System.out.println( "couldn't close connection" );
}
}
}
}