Java SQLite在比较两个密码时,如果它们不匹配,而sysout正确打印它们

Java SQLite在比较两个密码时,如果它们不匹配,而sysout正确打印它们,java,sql,javafx,sqlite,Java,Sql,Javafx,Sqlite,我正在建立一个包含用户及其密码的数据库。我有一个用JFX8制作的gui,使用intellij IDE 我已经成功地从数据库中提取了代码,只有在将它们与if x==x进行比较时,我才收到错误的密码消息 try { Connection conn = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\user\\Desktop\\java\\Java\\Just Messing Around\\MessyDB.db");

我正在建立一个包含用户及其密码的数据库。我有一个用JFX8制作的gui,使用intellij IDE

我已经成功地从数据库中提取了代码,只有在将它们与if x==x进行比较时,我才收到错误的密码消息

try {
            Connection conn = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\user\\Desktop\\java\\Java\\Just Messing Around\\MessyDB.db");
            System.out.println("DB Connected");
            Statement statement = conn.createStatement();
            ResultSet rs = statement.executeQuery("SELECT * FROM UserDB WHERE Tab = " + tabelis);
            while (rs.next()){
                int id = rs.getInt("ID");
                String  name = rs.getString("Name");
                int tab  = rs.getInt("Tab");
                String  DBpassword = rs.getString("Password");
                float right = rs.getFloat("Right");
                System.out.println("********************");
                System.out.println("********************");
                System.out.println( "ID = " + id );
                System.out.println( "Name = " + name );
                System.out.println( "Tab = " + tab );
                System.out.println( "Password = " + DBpassword );
                System.out.println( "Right = " + right );
                System.out.println();
                String password1 = pfPassword.getText();
                String password2 = DBpassword;

                if (password1 == password2){
                    System.out.println("**************");
                    System.out.println("if statement ok");
                    Parent mainMenuParent = FXMLLoader.load(getClass().getResource("MainMenu.fxml"));
                    Scene mainMenuScene = new Scene(mainMenuParent);
                    Stage appStage = (Stage) ((Node) event.getSource()).getScene().getWindow();
                    appStage.setScene(mainMenuScene);
                    appStage.show();
                    statement.close();
                    conn.close();
                }else{
                    System.out.println(pfPassword.getText() + "  " + DBpassword);
                    System.out.println("wrong password");
                    statement.close();
                    conn.close();
                }
在sys out In else中,在if语句之后,它将打印相同的密码

其他系统输出: lel lel错误密码


Java中的字符串是对象!您正在尝试检查两个内容相同的不同字符串对象是否相等。除非重写String类的equals方法(这是不容易做到的),否则这在Java中根本不起作用。 要检查字符串值(!)是否相等,请使用

password1.equals(password2)

Java中的字符串是对象!您正在尝试检查两个内容相同的不同字符串对象是否相等。除非重写String类的equals方法(这是不容易做到的),否则这在Java中根本不起作用。 要检查字符串值(!)是否相等,请使用

password1.equals(password2)

试试
password1.equals(password2)
。试试
password1.equals(password2)
。谢谢!我觉得有点傻:)谢谢你!我觉得有点傻:)