Boa tarde pessoal!
Seguinte,
como eu faço para realizar uma consulta por e-mail se no Oracle10g dá erro por causa do @?
A consulta na minha classe de negócios recebe o e-mail como parâmetro:
PreparedStatement pstm = this.connection.prepareStatement("select at_nome, at_login, at_senha from atendente where at_email = " + email);
e a servlet me retorna o seguinte erro:
java.sql.SQLException: ORA-04054: database link GMAIL.COM does not exist
E pensei em desmebrar campo email em nome e domínio na tabela do banco e depois realizar a pesquisa filtrando pelo nome que o usuário cadastrou mais o domínio mas não sei se tem alguma classe em java que trate deste problema ou alguma boa prática para resolver esta questão. Outro problema seria desmembrar o email informado pelo usuário em nome e domínio.
O que vocês sugerem?
Abraços
Que eu saiba, você tem de usar PreparedStatements com “?” e “setString”, não com concatenação para formar a string SQL. No seu caso a concatenação simples falhou porque não põe as aspas automaticamente. OK?
Acho que o problema neste caso não é bem este~.
mesmo eu realizando a consulta direto no oracle com o sql:
select * from atendente where at_email = algumemail@algumdominio
também dá erro
ORA-04054: o vínculo de banco de dados GMAIL.COM não existe
select * from atendente where at_email = 'algumemail@algumdominio'
Eu não lhe falei das aspas? Se você põe sem aspas, ele acha que é para fazer um link com um outro banco mencionado depois da “@” - é um operador especial para o Oracle.
Um email é uma string como outra qualquer.
Ah tá rsrs
pior é que eu substituí o = por like mas troquei as aspas e funcionou mas eu nem me liguei que o problema estava nas aspas duplas.
Valeu mesmo.
Abraços