Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将从数据库检索到的数据分配给字符串变量_Java_Mysql - Fatal编程技术网

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

Java 将从数据库检索到的数据分配给字符串变量,java,mysql,Java,Mysql,我正在制作一个系统,用于验证数据库中已经定义的凭据和jTextfield中输入的凭据。当我在if-else语句中输入条件时,它表示不能将字符串转换为布尔值。请帮忙 Connection con = (Connection) DriverManager.getConnection (host, uName, uPass); Statement stmt = (Statement) con.createStatement (); //login is a table

我正在制作一个系统,用于验证数据库中已经定义的凭据和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());
        };

相等的布尔运算符是
=
,而不是
=
(赋值运算符)。赋值操作将始终计算为其左值指定的值

这就是为什么
sqlpass=pass
计算为
字符串的原因。
sqlpass==pass
将计算为
布尔值

编辑: 不过,比较
字符串
s的标准方法是使用
.equals
方法,如下所示:


if(sqlpass.equals(pass))
if
语句表达式中有一个赋值,它返回一个
字符串,而不是所需的
布尔值

if (sqlpass = pass) {
应该是

if (sqlpass.equals(pass)) {

要比较
字符串
=
操作符比较
对象
引用而不是内容)

为什么不使用.equals()方法比较字符串对象。显然,
.equals
是比较
字符串
的正确方法。我太专注于赋值运算符和等式运算符之间的差异,以致于忽略了要点。