无法从String.EqualIgnoreCase比较中获取结果

时间:2019-05-09 13:40:34

标签: java jdbc

我想比较两个表示电子邮件的字符串变量。即使我使用的是'equalIgnoreCase()'方法,这两个字符串都只能用相同的字母大小写来匹配。

这是一个代码段:

    String Query = "SELECT Email FROM Gmail WHERE Email = ?" 

    boolean Flag = false; // the method returns boolean
    String email = null; // to use with SQL query

    try {
        Connection Con = DriverManager.getConnection("jdbc:derby://localhost:1527/EmailsDB");
        PreparedStatement PS = Con.prepareStatement(Query);
        PS.setString(1, Email);

        ResultSet RS = PS.executeQuery();

        while ( RS.next() ) {
            email = RS.getString("Email");

            if ( Email.equalsIgnoreCase(email) )
                Flag = true;

       }
    }
   // Email: a parameter string to check the user email entry.

预期: 如果数据库中有匹配的电子邮件,则该方法返回“ true”,从而丢弃用户输入。

1 个答案:

答案 0 :(得分:0)

也许问题在于您的字符串之一具有一些前导或尾随空格(即,您使用的是“ test@gmail.com”而不是“ test@gmail.com”)。如果是这样,则可以使用String.trim()删除空格,然后比较字符串:

String Query = "SELECT Email FROM Gmail WHERE Email = ?" 

boolean Flag = false; // the method returns boolean
String email = null; // to use with SQL query

try {
    Connection Con = DriverManager.getConnection("jdbc:derby://localhost:1527/EmailsDB");
    PreparedStatement PS = Con.prepareStatement(Query);
    PS.setString(1, Email);

    ResultSet RS = PS.executeQuery();

    while ( RS.next() ) {
        email = RS.getString("Email");

        if ( Email.trim().equalsIgnoreCase(email.trim()) )
            Flag = true;

   }
}