私は、非常に基本的なログイン機能を必要とする学校向けのプロジェクトに取り組んでいます (パスワードがプレーンテキストのままであることを考えると、あまり派手ではありません)。私はテスト データベースを持っており、データベースから参照および取得されるすべての値も適切に表示できることを徹底的にテストしました。コードで、比較される各変数の型が String 型であることがわかります。あなたへの私の質問は、変数 userOut と un が等しくないのはなぜですか? (私は、それらのそれぞれで .toString() メソッドを個別に使用することも、一緒に使用して、それらを「等しい」ようにすることも試みました)。
public static void main(String[] args) throws SQLException {
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/users", "root", "Hsiri0758");
System.out.println("Database connected...");
Statement stat = conn.createStatement();
Statement pwstat = conn.createStatement();
Scanner scan = new Scanner(System.in);
System.out.println("Username: ");
String un = scan.nextLine();
System.out.println("Password: ");
String pw = scan.nextLine();
ResultSet unRset = stat.executeQuery("SELECT username FROM accounts WHERE username = \"" + un + "\";");
unRset.next();
String userOut = unRset.getString(1);
ResultSet pwRset = pwstat.executeQuery("SELECT password FROM accounts WHERE password = \"" + pw + "\";");
pwRset.next();
String pwordOut = pwRset.getString(1);
if (userOut == un) {
System.out.println("Welcome " + un + "!");
}
else {
System.out.println("Invalid username.");
}
conn.close();
}
catch (SQLException ex) {
ex.printStackTrace();
}
}