2014-02-13 45 views
0

我需要某人來幫助我檢查爲什麼數據沒有記錄到數據庫中?當我嘗試「檢出」購物車時,購物車的記錄應該執行sql語句以將數據傳輸到數據庫。下面的代碼和錯誤:當將確認的購物車插入數據庫時​​(無法插入),Java MVC會創建sqlException

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections" 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.Util.getInstance(Util.java:386) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975) 
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1112) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2486) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2519) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2304) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
    at sun.reflect.GeneratedConstructorAccessor12.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:346) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at servlet.TicketDataBean.getConnection(TicketDataBean.java:16) 

,代碼:

Cart.jsp

<body> 
    <form action="ConfirmPurchaseServlet" method="POST" style="text-align: right; margin-top: -40px;margin-right: 10px;"> 
       <input type="submit" name="Submit" value="Check out" class="btn btn-success"> 
</form> 
</body> 

ConfirmPurchaseServlet.java

package place; 

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

/** 
* Servlet implementation class ConfirmPurchaseServlet 
*/ 
@WebServlet("/ConfirmPurchaseServlet") 
public class ConfirmPurchaseServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ 
     HttpSession session = request.getSession(); 

     Cart cart = (Cart) session.getAttribute("Cart"); 
     try{ 
      cart.finishtransaction(); 

     }catch(Exception e){e.printStackTrace();} 
     response.sendRedirect(response.encodeRedirectURL("/ItineryAirport/CheckConfirmation.jsp")); //to another page 
    } 
    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public BillServlet() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

} 

Cart.java

public void finishtransaction()throws Exception{ 
     Enumeration e = items.elements(); 
     connection = TicketDataBean.getConnection(); 
     statement = connection.createStatement(); 
     totalPrice=0.00; 

     while (e.hasMoreElements()){ 
      Flight item = (Flight) e.nextElement(); 
      String itemQuantity = "" + item.getQuantity(); 
      totalPrice = totalPrice + item.getPrice() * Integer.parseInt(itemQuantity); 
      String tourCode = item.getTourcode(); 

      String updateString = "INSERT INTO cart " + 
      " Values (" + CARTID + ", '" + 
      item.getTitle() + "', '" + 
        item.getAirline() + "', '" + 
        item.getTravelto() + "', '" + 
        item.getTravelfrom() + "', " + 
      item.getPrice() + ", " + 
        item.getQuantity() + ") "; 
      statement.executeUpdate(updateString); 
      System.out.println(statement); 
      CARTID++; 
      } 

    } 

回答

0

close語句和數據庫連接。添加代碼時遇到問題 - 但您需要嘗試並最終阻止。在finally塊,你可以撥打

statement.close(); 
connection.close(); 

這些語句應該是在最後在finishTransactions()方法或任何該方法名是墊塊。

因爲錯誤表示您沒有可用的連接。

+0

好的,我會試試 –

+0

更新了答案 - 應該在finishTransaction()方法的底部。 – mikemil

+0

好像錯誤仍然一樣。有沒有其他的可能性,爲什麼不能插入數據? –