2016-11-28 44 views
-1

我正在編寫一個Java數據庫程序,在這個程序中,我有一個循環調用了大約6個方法,在每個方法中,連接建立到MySQL以獨立的方式從其他連接返回布爾值,while循環運行20倍(行數爲20),因此(6 * 20 = 120)連接在該循環制,問題是,在第14或第19次迭代後,我從MySQL獲得此錯誤:MySQL如何處理每秒連接數,然後決定阻止連接?

Exception in thread "main" java.lang.NullPointerException 
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. 

同樣在此:at project_2.Reserve.inLarge(Reserve.java:116)

當行116包含:

Statement s = c.createStatement(); 

其中c是連接類型(即MySQL Java連接類型)。

每個函數都會創建一個名爲c的連接及其自己的語句。

我沒有在MySQL中待過,所以我期望有人會告訴我,這是一種可怕的方式來做到這一點,然後大叫我......只是在開玩笑,謝謝你的幫助。

我也嘗試添加thread.sleep來延遲事情,但它沒有奏效。

+1

顯示相關的代碼將是有益的,比如如何「每個函數都會創建一個叫做c的連接」,但即使在你這樣做之前,我也會按照你所懷疑的那樣說,這不是做這種事情的好方法。 – rmlan

+0

@rmlan謝謝你的回覆,我發現這個問題,我發佈了它作爲答案。 – aero

回答

0

我發現這個問題,它是在get_conn()函數我有這個行兩次,顯然是MySQL服務器DriverManager.getConnection(conn_str,username,pass);上狠一點:

public static Connection get_conn(){ 
     Connection conn=null; 

     try{ 
      conn =(Connection) DriverManager.getConnection(conn_str,username,pass); 
     conn =(Connection) DriverManager.getConnection(conn_str,username,pass); 
    }catch (SQLException e){ 
      System.out.println(e); 
     } 


     return conn; 
    }