Первая проблема: вы включаете значения непосредственно в SQL. Не делайте этого - он просто просит SQL-инъекцию .
Вместо этого используйте подготовленный оператор с параметризованными значениями. Вы можете обнаружить, что этого достаточно, чтобы решить проблему.
PreparedStatement pst = conn.prepareStatement
("select [Email address], Username from Userdetails where [Email address]=?");
// This may give the same problem...
pst.setString(1, str);
// but this may fix it
// pst.setClob(1, new StringReader(str));
ResultSet results = pst.executeQuery();
(Очевидно, установить параметр только так или иначе.)
Не забудьте закрыть оператор в блоке finally
.