2014-09-05 122 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类的方法,该方法将返回计数器并且可以使用它。

相关问题