Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hélio_Julio

Email duplicado no struts

Recommended Posts

Olá pessoal,como faço para verificar no banco de dados se existe um email duplicado?Se alguém puder me dar uma dica de como fazer isso agradeço muito.Segue o meu bean:

package cadastro.bean;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.LinkedList;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.sql.DataSource;import cadastro.bean.UserData;public class AdminUsers { protected static DataSource dataSource; public AdminUsers() throws Exception { if (dataSource == null) { try { InitialContext ic = new InitialContext(); // se for tomcat dataSource = (DataSource) ic.lookup("java:comp/env/jdbc/cadastroDS"); // no JBoss faça // dataSource = (DataSource) ic.lookup("java:jdbc/cadastroDS"); } catch (NamingException ex) { System.out.println(ex.getMessage()); throw ex; } } } protected Connection getConnection() throws SQLException { Connection conn = null; try { conn = dataSource.getConnection(); } catch (SQLException e) { throw e; } return conn; } protected void closeConnection( Connection conn, PreparedStatement stmt, ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { } } if (conn != null) { try { conn.close(); } catch (SQLException e) { } } } public LinkedList getUserList() throws SQLException { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; LinkedList users = new LinkedList(); try { conn = getConnection(); stmt = conn.prepareStatement("select * from dbcadastro"); rs = stmt.executeQuery(); while (rs.next()) { UserData user = new UserData(); // user.setId(rs.getInt("id")); user.setNome(rs.getString("nome")); user.setSobrenome(rs.getString("sobrenome")); user.setOpcaoemail(rs.getString("mostraremail")); user.setEmail(rs.getString("email")); user.setTelefone(rs.getString("telefone")); user.setEndereco(rs.getString("endereco")); user.setBairro(rs.getString("bairro")); user.setCidade(rs.getString("cidade")); user.setEstado(rs.getString("estado")); user.setLogin(rs.getString("login")); user.setSenha(rs.getString("senha")); user.setInformativos(rs.getString("informativos")); users.add(user); } } catch (SQLException e) { throw e; } finally { closeConnection(conn, stmt, rs); } return users; } public void insertUser(UserData user) throws SQLException { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = getConnection(); stmt = conn.prepareStatement( "insert into dbcadastro \n" + "(nome, sobrenome, mostraremail, email, telefone, endereco, bairro, cidade, estado, login, senha, informativos) \n" + "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); stmt.setString(1, user.getNome()); stmt.setString(2, user.getSobrenome()); stmt.setString(3, user.getOpcaoemail()); stmt.setString(4, user.getEmail()); stmt.setString(5, user.getTelefone()); stmt.setString(6, user.getEndereco()); stmt.setString(7, user.getBairro()); stmt.setString(8, user.getCidade()); stmt.setString(9, user.getEstado()); stmt.setString(10, user.getLogin()); stmt.setString(11, user.getSenha()); stmt.setString(12, user.getInformativos()); stmt.executeUpdate(); } catch (SQLException e) { throw e; } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } } } public void updateUser(UserData user) throws SQLException { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = getConnection(); stmt = conn.prepareStatement( "update dbcadastro set \n" + "nome = ?, sobrenome = ?, mostraremail = ?, email = ?, telefone = ?, endereco = ?, bairro = ?, cidade = ?, estado = ?, informativos = ?\n" + "where id = ?"); stmt.setString(1, user.getNome()); stmt.setString(2, user.getSobrenome()); stmt.setString(3, user.getOpcaoemail()); stmt.setString(4, user.getEmail()); stmt.setString(5, user.getTelefone()); stmt.setString(6, user.getEndereco()); stmt.setString(7, user.getBairro()); stmt.setString(8, user.getCidade()); stmt.setString(9, user.getEstado()); stmt.setString(10, user.getInformativos()); stmt.setInt(11, user.getId()); stmt.executeUpdate(); } catch (SQLException e) { throw e; } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } } } public void deleteUser(UserData user) throws SQLException { // public void deleteUser(int id) throws SQLException { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = getConnection(); stmt = conn.prepareStatement( "delete from dbcadastro where id = ?"); stmt.setInt(1, user.getId()); stmt.executeUpdate(); } catch (SQLException e) { throw e; } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } } }}

Segue o meu action:

package cadastro.action;import java.sql.SQLException;import java.util.LinkedList;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.struts.action.Action;import org.apache.struts.action.ActionError;import org.apache.struts.action.ActionErrors;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.validator.DynaValidatorForm;import cadastro.bean.AdminUsers;import cadastro.bean.UserData;public class SaveInsertUsuarioAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { DynaValidatorForm dynaForm = (DynaValidatorForm) form; ActionErrors errors = new ActionErrors(); String senha1 = (String)dynaForm.get("senha"); String senha2 = (String)dynaForm.get("confirmasenha"); String nome = (String)dynaForm.get("nome"); String sobrenome = (String)dynaForm.get("sobrenome"); String email = (String)dynaForm.get("email"); String login = (String)dynaForm.get("login"); String senha = (String)dynaForm.get("senha"); HttpSession session = request.getSession(); // popula o bean do usuario com os dados que vieram do Form UserData user = (UserData) session.getAttribute("insertUserBean"); //user.setIdUsuario(Integer.parseInt((String)dynaForm.get("idUsuario"))); if ((nome == null) || (nome.length() < 1)) { errors.add("nome", new ActionError("error.nome.required")); } if ((sobrenome == null) || (sobrenome.length() < 1)) { errors.add("sobrenome", new ActionError("error.sobrenome.required")); } if ((email == null) || (email.length() < 1)) { errors.add("email", new ActionError("error.email.required")); } if ((login == null) || (login.length() < 1)) { errors.add("login", new ActionError("error.login.required")); } if ((senha == null) || (senha.length() < 1)) { errors.add("senha", new ActionError("error.senha.required")); } if (!senha1.equals(senha2)) { errors.add("confirmasenha", new ActionError("error.confirmasenha")); } user.setNome((String)dynaForm.get("nome")); user.setSobrenome((String)dynaForm.get("sobrenome")); user.setOpcaoemail((String)dynaForm.get("opcaoemail")); user.setEmail((String)dynaForm.get("email")); user.setTelefone((String)dynaForm.get("telefone")); user.setEndereco((String)dynaForm.get("endereco")); user.setBairro((String)dynaForm.get("bairro")); user.setCidade((String)dynaForm.get("cidade")); user.setEstado((String)dynaForm.get("estado")); user.setLogin((String)dynaForm.get("login")); user.setSenha((String)dynaForm.get("senha")); user.setInformativos((String)dynaForm.get("informativos")); AdminUsers adminUsers = new AdminUsers(); String email1 = EMAIL QUE VEM DO BANCO ; if(email.equals(email1)) { errors.add("Email", new ActionError("error.Email.duplicateKey")); } if (!errors.isEmpty()) { saveErrors(request, errors); return (mapping.findForward("error")); } // adminUsers.insertUser(user); return (mapping.findForward("success")); }}

Não sei como puxar essa verificação lá do bean

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hélio_JulioAcho que melhor do que fazer essa verificação em sua aplicação, é pedir pro BANCO, não deixar isso acontecer. Pede pra sua variavel la no banco, suponhamos email, que ela seja unique, asism como sua PK, tambem é. Assim você evita que algo possa dar errado.Fiz uma aplicação a poucos dias com esse verificação, só que em vez de email, eram descrições, com nomes simples, certificados e etc.Ai inserir, pedi pra que todos estes, fossem pro banco em maiusculo, pra facilitar minha pesquisa mais tarde, e que verificasse no banco se tal descrição ja está cadastrada. Conlusão, ao dar o erro no banco, eu vinha propagando esse erro, ate a classe que eu precisava, e la taratava o erro, e mostrava a mensagem correta ao usuario.Espero ter ajudado.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.