将整数值从一个类传递到另一个类时出现问题。我创建了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 :(得分:1)
在计数器类中创建一个getter方法。然后在需要学生人数时在寄存器类中调用该方法。
答案 1 :(得分:1)
如果您的项目只有1个变量用于此学生数量,您可以将其创建为公共静态变量和类变量,以通过键入NameOfClassThisVariableIsLocated.NameOfVariable或创建Singleton-来从命名空间中的任何类访问它将此变量作为属性的类。 Singleton-class的优点是,您只能创建此类的一个实例,因此您可以使用此变量并确保在代码中的任何位置使用正确的值。 如果您决定使用这两种方法中的一种,则不需要将变量作为参数传递,因为您可以从命名空间的任何位置访问它。
答案 2 :(得分:1)
如果你想从学生班调用CounterTable类方法,首先你需要创建该类的实例给学生班, 然后你可以访问CounterTable类的方法,它将返回计数器,你可以使用它。