Java 两个相同的词是不同的

Java 两个相同的词是不同的,java,Java,我使用sqlite进行登录,但是为了比较登录和数据库单词,我使用了以下代码: public static boolean result(String nome, String pass) { Connection c = null; Statement stmt = null; boolean bo = false; try { Class.forName("org.sqlite.JDBC"); c = DriverManager .g

我使用sqlite进行登录,但是为了比较登录和数据库单词,我使用了以下代码:

public static boolean result(String nome, String pass) {
Connection c = null;
Statement stmt = null;
boolean bo = false;
try {
    Class.forName("org.sqlite.JDBC");
    c = DriverManager
            .getConnection("jdbc:sqlite:C:/Users/M4UR0/Desktop/Pastas/Programação/Java/Albamoura/data.db");
    c.setAutoCommit(false);

    stmt = c.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM COMPANY where NAME = '" + nome + "';"); //

    String password = rs.getString("PASSWORD");
    if (rs.next() || !pass.equalsIgnoreCase(password)) {
        bo = false;
        System.out.println("deu1 " + password + " - " + pass);
    } else {
        System.out.println("Entrou!");
        bo = true;
    }

    rs.close();
    stmt.close();
    c.close();
} catch (Exception e) {
    System.err.println(e.getClass().getName() + ": " + e.getMessage());
    System.exit(0);
    bo = false;
}
System.out.println("Operation done successfully");
return bo;
}

然后说:

埃斯塔贝列西达国家公园

一个字一个字

操作成功完成

假的


两个相同的词看起来不同,我没有注意到什么吗?请帮帮我,你的布尔逻辑不在这里

(rs.next() || !pass.equalsIgnoreCase(password))
那应该是

(rs.next() && !pass.equalsIgnoreCase(password))

使用
|
时,当您有一行时,它不会评估下一个条件(短路)。请注意,您的
else
也是似是而非的-因为如果没有行,那么您似乎也会将其设置为成功。

什么是“stromg”?它的意思是“对不起”。我还注意到
stmt.executeQuery(…)
行很容易出现SQL注入,您可能希望改用准备好的语句。