2

我正在练习一些 Java 编码,但连接类扩展到登录类时遇到了一些问题。我想要做的是提示用户使用用户名和密码登录。getUser() 将存储用户名,而 getPassword() 不经意地存储用户名的密码。当我运行驱动程序类时,它会提示用户输入用户名,但从不提示输入密码。我需要进行哪些更改,以便它还会提示输入密码。

//Security class
import java.io.IOException;
import java.sql.SQLException;
import java.util.Scanner;

class SecurityDriver {

public String url = "myurl"; //Don't want to display my url to the public
public static String user;
public static String password;



public static String getUser() {
    Scanner in = new Scanner(System.in);
    System.out.println("Please enter username: ");

    return user = in.nextLine();
}

public String getPassword() {
    Scanner in = new Scanner(System.in);
    System.out.println("Please enter password: ");
    return password = in.nextLine();
}



public static void main(String[] args) throws IOException {

    SecurityTest stObject = new SecurityTest();
    stObject.simpleQuery();
}

我的下一段代码是连接类。

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class SecurityTest extends SecurityDriver{




public void simpleQuery() throws IOException{


    SecurityDriver userObject = new SecurityDriver();
    SecurityDriver.getUser();


    Connection con;
    Statement stmt;
    ResultSet rs;

    try {
        Class.forName("com.ibm.as400.access.AS400JDBCDriver");
        con = DriverManager.getConnection(url, user, password);
        System.out.println("CONNECTED");
    }
    catch (ClassNotFoundException e)
    {
          System.err.println("Could not load JDBC driver");
          System.out.println("Exception: " + e);
          e.printStackTrace();
        }

        catch(SQLException ex)                                              
        {
          System.err.println("SQLException information");
          while(ex!=null) {
            System.err.println ("Error msg: " + ex.getMessage());
            System.err.println ("SQLSTATE: " + ex.getSQLState());
            System.err.println ("Error code: " + ex.getErrorCode());
            ex.printStackTrace();
            ex = ex.getNextException(); // For drivers that support chained exceptions
          }
        }


}

}

4

1 回答 1

1

看来您只是在 simpleQuery() 方法中调用 getUser() 方法。

尝试在这里调用 getPassword() 方法。

编辑:像这样的东西:

public void simpleQuery() throws IOException{


    SecurityDriver userObject = new SecurityDriver();
    SecurityDriver.getUser();
    SecurityDriver.getPassword();

//...rest of code
于 2018-12-17T14:58:11.807 回答