2014-09-05 120 views
1

將整數值從一個類傳遞到另一個類時出現問題。我創建了2個MYSQL表,一個用於存儲學生信息,另一個用於「櫃檯表」。學生表的目的是存儲信息,「櫃檯表」是存儲我們擁有多少學生的數量。之後,我創建了一個方法來從「計數器表」中獲取整數值,並且想要發送到另一個類方法以將值增加1以便在註冊時插入學生表中的新行。例如,我的學生表有5個學生,因此我的計數器表格將具有值5.當學生想要註冊新帳戶時,他或她只能填寫STD_NAME,STD_TEL,並且NO將來自方法從表「計數器表」中得到整數值併發送給另一個方法以加1。因此,新學生在學生表中將沒有6行。將一個整數從一個類傳遞到一個類

CLASS FOR COUNTER TABLE 


public CounterTable(){ 

} 

public int getCurrentNumber(Connection conn, String table_name){ 
    int current_no = 0; 
    String QUERY = "SELECT * FROM counter_table WHERE TABLE_NAME='" + table_name + "'"; 
    Statement stmt = null; 
    ResultSet rs = null;   
    try { 
     stmt = conn.createStatement(); 
     rs = stmt.executeQuery(QUERY); 
     rs.next(); 
     current_no = rs.getInt("TABLE_NO"); 
    }  
    catch(SQLException ex){ 
     ex.printStackTrace(); 
    }   
    catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
    finally{ 
     try{ 
      stmt.close(); 
      rs.close(); 
     } 
     catch(Exception ex){ 
      ex.printStackTrace(); 
      ex.getMessage(); 
     } 
    } 
    return current_no; 
} 

public void updateCounterNumber(Connection conn, String table_name){ 
    int current_no = 0; 
    String QUERY = "UPDATE table_no WHERE TABLE_NAME='" + table_name + "'"; 
    Statement stmt = null; 
    ResultSet rs = null;   
    try { 
     stmt = conn.createStatement(); 
     rs = stmt.executeQuery(QUERY); 
     rs.next(); 
    }  
    catch(SQLException ex){ 
     ex.printStackTrace(); 
    }   
    catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
    finally{ 
     try{ 
      stmt.close(); 
      rs.close(); 
     } 
     catch(Exception ex){ 
      ex.printStackTrace(); 
      ex.getMessage(); 
     } 
    } 

} 

}

CLASS FOR STUDENT REGISTER 




String std_name = ""; 
String std_icno = ""; 
String std_mobile = ""; 
String std_tel = ""; 
String std_address = ""; 
String std_gender = ""; 
String no = ""; 
String table_name = ""; 


public void init(ServletConfig config) throws ServletException { 
    super.init(config); 
} 


public void InsertData(){ 
    Connection conn = new Database().getConnection(); 
    PreparedStatement pstmt = null; 
    //ResultSet rs = null;  
    try { 
      String student =""; 
      conn = new Database().getConnection(); 
      String query = "INSERT INTO student(NO, STD_NAME, STD_ICNO, STD_MOBILE, STD_TEL, STD_ADDRESS, STD_GENDER) values(?,?,?,?,?,?,?)"; 
      SetNewNumberPlusOne(conn, student, no); 
      pstmt = conn.prepareStatement(query); 
      pstmt.setString(1, no); 
      pstmt.setString(2, std_name); 
      pstmt.setString(3, std_icno); 
      pstmt.setString(4, std_mobile); 
      pstmt.setString(5, std_tel); 
      pstmt.setString(6, std_address); 
      pstmt.setString(7, std_gender); 
      pstmt.executeUpdate(); 
      updateCounterNumber(conn, student, no); 
     } 

     catch(SQLException ex){ 
      ex.printStackTrace(); 
     } 
     catch(Exception ex){ 
      ex.printStackTrace(); 
     } 

     finally{ 
      try{ 
       pstmt.close(); 
       if(conn != null){ 
        conn.close(); 
       } 
      } 
      catch(SQLException ex){ 
       ex.printStackTrace(); 
       ex.getMessage(); 
      } 
     } 
} 




public void SetNewNumberPlusOne(Connection conn, String student, String no){ 
} 


private void updateCounterNumber(Connection conn, String student, String no2){ 

} 

}

我從櫃檯表傳遞current_no值SetNewNumberPlusOne的方法,在課堂上學生的問題登記

+0

哪裏在學生註冊中調用getCurrentNumber? – 2014-09-05 07:10:01

+0

不是數據庫,您使用的數據庫支持'SELECT COUNT(id)FROM Student'查詢嗎?這可以簡單地給你提供這種效果,爲此你創建了一個新的表格來跟蹤已經註冊的學生人數。 – 2014-09-05 07:48:55

回答

1

創建一個getter方法計數器類。然後當您需要學生人數時,在註冊課程中調用該方法。

1

如果你的項目只有一個變量爲這個數量的學生,你可以創建它作爲一個公共靜態變量和一個類變量,以通過鍵入NameOfClassThisVariableIsLocated.NameOfVariable從任何類訪問它的名字空間或創建一個單身人士這個變量作爲一個屬性。 Singleton類的優點是,您可以創建該類的一個實例,因此您可以使用此變量並確保在代碼中的任何位置使用正確的值。 如果您決定使用這兩種方法中的一種,則不需要將該變量作爲參數傳遞,因爲您可以從名稱空間中的任何位置訪問該變量。

1

如果您希望從學生類中調用CounterTable類方法,首先需要爲學生類 創建該類的實例,然後您可以訪問CounterTable類的方法,該方法將返回計數器並且可以使用它。

相關問題