有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将从数据库检索到的数据分配给字符串变量

我正在制作一个系统,用于验证数据库中已经定义的凭据和jTextfield中输入的凭据。当我在if-else语句中输入条件时,它表示不能将字符串转换为布尔值。请帮忙

 Connection con = (Connection) DriverManager.getConnection (host, uName, uPass);
        Statement stmt = (Statement) con.createStatement ();
        //login is a table in my database,password a tuple
        String SQL = "SELECT password FROM login;";
        ResultSet password = stmt.executeQuery (SQL);

        String pass = adminpassword.getText();
        String sqlpass = password.getString("password");
//error shows on if else below
        if(sqlpass = pass){
            JOptionPane.showMessageDialog(null,"You have entered an incorrect password,please try again.","Incorrect Password",JOptionPane.WARNING_MESSAGE);
        }
        else{
            String passconfirm = "SELECT admin_id WHERE password = 77353";
            ResultSet confirmpass = stmt.executeQuery(passconfirm);
            JOptionPane.showMessageDialog(null,"Welcome","Welcome " + confirmpass,JOptionPane.INFORMATION_MESSAGE);
            Countyinfo proceed = new Countyinfo();
            proceed.setVisible(true);
        }
        }
        catch(SQLException err){
         System.out.println (err.getMessage());
        };

共 (2) 个答案

  1. # 1 楼答案

    if语句表达式中有一个赋值,它返回的是String,而不是所需的boolean

    if (sqlpass = pass) {
    

    应该是

    if (sqlpass.equals(pass)) {
    

    比较Strings(操作符==比较Object引用而不是内容)

  2. # 2 楼答案

    相等的布尔运算符是==,而不是=(赋值运算符)。赋值操作的计算结果将始终为分配给其左值的值

    这就是为什么sqlpass = pass的计算结果为Stringsqlpass == pass将计算为boolean

    编辑: 不过,比较String的标准方法是使用如下.equals方法:

    if(sqlpass.equals(pass))