java - 我正在尝试做一个 (if , else) 声明,但它不起作用

我正在制作一个需要登录的小程序我正在使用 SQLite 作为数据库并使用 NetBeans ide 第一个(if,else 语句)是为了确保用户不会离开文本字段或密码字段为空并且它不起作用第二个(if,else语句)是检查密码和用户名是否在数据库中,它的工作正常这里是我的代码::

private void btnloginActionPerformed(java.awt.event.ActionEvent evt) {                                         
  
if(jTextField1.getText()== "" || jPasswordField1.getText()=="")
{JOptionPane.showMessageDialog(this, "the usernmae or bassword filed is empty");}

else {
     String sql = "SELECT * from Accounts WHERE User LIKE ? AND pass LIKE ? ; ";
    try{
        pst = con.prepareStatement(sql);
        pst.setString(1, jTextField1.getText());
        pst.setString(2, jPasswordField1.getText());
        rs = pst.executeQuery();
                
        if (rs.next()){
            
            JOptionPane.showMessageDialog(null,"log in successful");
            
            java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new booking().setVisible(true);
                dispose();
            }
        });
                    
                      }
        else 
        {
            JOptionPane.showMessageDialog(this, " wrong username or password ");
            
        }
    }
    catch (Exception e){
        
            JOptionPane.showMessageDialog(this, "error "+e);
    
    }} ```

回答1

这些条件无效。您需要在 String 中使用 equal 方法

jTextField1.getText().equal("") || jPasswordField1.getText().equal("")

或者你可以使用

jTextField1.getText().isEmpty() || jPasswordField1.getText().isEmpty()

更多信息在这里:

https://www.geeksforgeeks.org/difference-between-and-equals-method-in-java/#:%7E:text=We%20can%20use%20%3D%3D%20operators,of%20values%20in%20the%20objects

回答2

最好的方法首先将这些用户名和密码保存在字符串对象中。

String username=jTextField1.getText();
String password=jPasswordField1.getText();

现在将它们与 null 和 length 进行比较。

if((username!=null && username.length>0) || (password!=null && password.length>0)){
//write sql query
}else{
//error message
}