我想比较两个表示电子邮件的字符串变量。即使我使用的是'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”,从而丢弃用户输入。
答案 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;
}
}