ユーザーが User クラスでシステムにログインできるようにする機能があります。ログインすると、名前と姓がデータベースから取得され、プライベート変数として User クラスに格納されます。
private String username = "";
private String forename = "";
private String surname = "";
public User(){}
public boolean loginButtonAction(String user, String pass) {
try {
String statement = "SELECT PUNAME, PPASS, PFNAME, PSNAME FROM APP.PERSON WHERE PUNAME = ? AND PPASS = ?";
PreparedStatement ps = Main.getPreparedStatement(statement);
ps.setString(1, user);
ps.setString(2, pass);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
System.out.println("Logged in");
username = user;
forename = rs.getString("PFNAME");
surname = rs.getString("PSNAME");
return true;
}
rs.close();
ps.close();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
System.out.println("Incorrect login details");
return false;
}
これらの変数を返すために、User クラス内にパブリック メソッドがあります。
public String getUsername() {
return username;
}
public String getForename() {
return forename;
}
public String getSurname() {
return surname;
}
もちろん、正常にログインした後、テスト目的で Main クラスとメソッド内に User の新しいインスタンスを作成し、単に User の姓と名を出力しています。
User u = new User();
u.loginButtonAction("johnny", "arsenal");
System.out.println("Forename: " + u.getForename());
ユーザー名は正常に機能しますが、もちろんデータベースから取得されていません。この結果は次のとおりです。
run:
Logged in
Forename:
APP.PERSON 内のデータベース値は次のとおりです。
私は何を間違っていますか?