Não consigo fazer 2 INSERT na DAO e fazer a Servlet e JSP funcionar! HELP!

8 respostas
jspservletmysqljava
hugobaka

Minha Classe ClienteDAO com a tentativa de colocar 2 INSERT:

public boolean gravar(Cliente c){
    try{
        this.conectar();
        String sql ;
        if(c.getIdcliente()==0)
            sql = "INSERT INTO cliente (nome, tel, end, email, cpf, idusuario)"
            + "VALUES (?,?,?,?,?,?)";
        else
            sql = "UPDATE cliente SET nome=?, tel=?, end=?, email=?, cpf=?, idusuario=?"
                    + " WHERE idcliente=?";
        PreparedStatement pstm = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
        pstm.setString(1,c.getNome());
        pstm.setString(2,c.getTel());
        pstm.setString(3,c.getEnd());
        pstm.setString(4,c.getEmail());
        pstm.setString(5,c.getCpf());
        pstm.setInt(6,c.getUsuario().getIdusuario());
        pstm.execute();
        ResultSet rs = pstm.getGeneratedKeys();
        if(rs.next()){
            c.setIdcliente(rs.getInt(1));
        }
        try{
            Usuario u = new Usuario();
            String sql_item = "INSERT INTO usuario ( login, senha, status, idperfil) "
            + "VALUES (?,?,?,?)";
        PreparedStatement pstm_item = conn.prepareStatement(sql_item);
        pstm_item.setString(2,u.getLogin());
        pstm_item.setString(3,u.getSenha());
        pstm_item.setInt(4,u.getStatus());
        pstm_item.setInt(5, u.getPerfil().getIdperfil());
        pstm_item.execute();
        }catch(Exception e){
            e.printStackTrace();
        }
        if(c.getIdcliente()>0)
            pstm.setInt(7,c.getIdcliente());
    
        pstm.execute();
        this.desconectar();
        return true;
    }catch(Exception e){
        System.out.println(e);
        return false;
    }
}

Minha servlet :

PrintWriter out = response.getWriter();
    String idcliente = request.getParameter("idcliente");
    String nome = request.getParameter("nome");
    String tel = request.getParameter("tel");
    String cpf = request.getParameter("cpf");
    String end = request.getParameter("end");
    String email = request.getParameter("email");
    String idusuario = request.getParameter("idusuario");
    String login = request.getParameter("login");
    String senha = request.getParameter("senha");
    String status = request.getParameter("status"); 
    String idperfil = request.getParameter("idperfil");
    String mensagem = "";
    
    Cliente c = new Cliente();
    if(!idcliente.isEmpty())
       c.setIdcliente(Integer.parseInt(idcliente));
    c.setNome(nome);
    c.setTel(tel);
    c.setCpf(cpf);
    c.setEnd(end);
    c.setEmail(email);
    Usuario u = new Usuario();
    u.setIdusuario(Integer.parseInt(idusuario));
    c.setUsuario(u);
    u.setNome(nome);
    u.setLogin(login);
    u.setSenha(senha);
    u.setStatus(Integer.parseInt(status));
    Perfil p = new Perfil();
    p.setIdperfil(Integer.parseInt(idperfil));
    u.setPerfil(p);

E sempre retorna o erro na pagina

jsp: java.lang.NumberFormatException: For input string: ""

8 Respostas

staroski

Estás fazendo um Integer.parseInt passando um String vazio.

hugobaka

Não consigo achar com consertar o erro. Será que está no form da jsp ?

<!-- Lado esquerdo!-->
                                                    <div class="col-md-6">
                                                        
							<!-- Nome -->
							<span class="txt9">
								Nome
							</span>

							<div class="wrap-inputname size12 bo2 bo-rad-10 m-t-3 m-b-23">
								<input class="bo-rad-10 sizefull txt10 p-l-20" type="text" name="nome" value="${usuario.nome}" placeholder="Nome">
                                                                    <input type="hidden" class="form-control" id="idusuario" name="idusuario" maxlength="25" value="${usuario.idusuario}"/>
                                                                    <input type="hidden" class="form-control" id="idusuario" name="idcliente" maxlength="25" value="${cliente.idcliente}"/>
                                                                    
                                                            </div>

							<!-- Sobrenome -->
							<span class="txt9">
								Endereço
							</span>

							<div class="wrap-inputphone size12 bo2 bo-rad-10 m-t-3 m-b-23">
								<input class="bo-rad-10 sizefull txt10 p-l-20" type="text" name="end" value="${cliente.end}" placeholder="Endereço">
							</div>

							
                                                            
                                                            <!-- Login -->
							<span class="txt9">
								Nome de usuário
							</span>

							<div class="wrap-inputemail size12 bo2 bo-rad-10 m-t-3 m-b-23">
								<input class="bo-rad-10 sizefull txt10 p-l-20" type="text" name="login" value="${usuario.login}"placeholder="Login">
							</div>
                                                            
                                                            
                                                                    <!-- Senha -->
							<span class="txt9">
								Senha
							</span>

							<div class="wrap-inputemail size12 bo2 bo-rad-10 m-t-3 m-b-23 ">
								<input class="bo-rad-10 sizefull txt10 p-l-20" type="password" name="senha" value="${usuario.senha}" placeholder="Senha">
							</div>
                                                                    <!-- Status !-->
                                                            <input type="hidden" name="status" id="status" value="1"/>
                                                            
                                                            <!-- idPerfil !-->
                                                            <span class="txt9">
                                                            </span>
                                                            <select name="idperfil" id="idperfil" required="" class="form-control">
                                                                <option value="">Selecione o Perfil</option>
                                                                    <jsp:useBean class="model.Perfil" id="perfil"/>
                                                                    <c:forEach var="p" items="${perfil.lista}">
                                                                        <option value="${p.idperfil}"
                                                                        <c:if test="${p.idperfil==usuario.perfil.idperfil}">
                                                                            selected="${p.idperfil}"
                                                                        </c:if>>${p.perfil}</option>
                                                                    </c:forEach>
                                                            </select> 
						</div>
                                                <!-- Lado esquerdo !-->
                                                
                                                <!-- Lado direito !-->
                                                <div class="col-md-6">

							<!-- Telefone -->
							<span class="txt9">
								Telefone
							</span>

							<div class="wrap-inputphone size12 bo2 bo-rad-10 m-t-3 m-b-23">
								<input class="bo-rad-10 sizefull txt10 p-l-20" type="text" name="tel" value="${cliente.tel}" maxlenght="11" placeholder="Telefone">
							</div>
                                                            
                                                            <!-- Cpf -->
							<span class="txt9">
								CPF
							</span>

							<div class="wrap-inputemail size12 bo2 bo-rad-10 m-t-3 m-b-23 ">
								<input class="bo-rad-10 sizefull txt10 p-l-20" type="text" maxlenght="14" name="cpf" value="${cliente.cpf}" placeholder="CPF">
							</div>
                                                            
                                                            <!-- Email -->
							<span class="txt9">
								Email
							</span>

							<div class="wrap-inputemail size12 bo2 bo-rad-10 m-t-3 m-b-23">
								<input class="bo-rad-10 sizefull txt10 p-l-20" type="text" name="email" placeholder="email" value="${cliente.email}" required="@">
							</div>
                                                            

						</div>
                                                            
                                                <!-- Lado direito!-->
					</div>

					<div class="wrap-btn-booking flex-c-m m-t-100">
						<!-- Button3 -->
						<button class="btn3 flex-c-m size13 txt11 trans-0-4">
							Cadastrar
						</button>
					</div>
				</form>
hugobaka

ClienteDAO com algumas mudanças mas continua dando o msm erro.

public boolean gravar(Cliente c){

Usuario u = new Usuario();

try{

this.conectar();

String sql ;

if(c.getIdcliente()==0)

sql = "INSERT INTO usuario (nome, login, senha, status, idperfil) "

+ VALUES (?,?,?,?,?);
else
            sql = "UPDATE cliente SET nome=?, tel=?, end=?, email=?, cpf=?, idusuario=?"
                    + " WHERE idcliente=?";
        
        PreparedStatement pstm = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
        pstm.setString(2, u.getNome());
        pstm.setString(3,u.getLogin());
        pstm.setString(4,u.getSenha());
        pstm.setInt(5,u.getStatus());
        pstm.setInt(6, u.getPerfil().getIdperfil());
        pstm.execute();
        ResultSet rs = pstm.getGeneratedKeys();
        
        if(rs.next()){
        c.getUsuario().setIdusuario(rs.getInt(1));
        }
        
        String sql_item = "INSERT INTO cliente ( tel, end, email, cpf, idusuario)"
            + "VALUES (?,?,?,?,?)";
        PreparedStatement pstm_item = conn.prepareStatement(sql_item);
        pstm_item.setString(2,c.getTel());
        pstm_item.setString(3,c.getEnd());
        pstm_item.setString(4,c.getEmail());
        pstm_item.setString(5,c.getCpf());
        pstm_item.setInt(6,c.getUsuario().getIdusuario());
        pstm_item.execute();
        if(c.getIdcliente()>0)
            pstm.setInt(7,c.getIdcliente());
    
        pstm.execute();
        this.desconectar();
        return true;
    }catch(Exception e){
        System.out.println(e);
        return false;
    }
}
adriano_si

Agora você está tentando transformar um valor boolean true em um número.

Pergunta, você sabe debugar seu código? Outra coisa, a stack trace no seu console de execução deve estar dizendo em qual linha o erro está acontecendo.

hugobaka

Não sei kkk sou iniciante.

staroski

É importante aprender a interpretar o StackTrace, ele te diz exatamente onde o erro “estourou”.

adriano_si

Certo. Você está usando algum IDE ou executando seu código pelo terminal do SO?

hugobaka

To usando netbeans

Criado 30 de maio de 2019
Ultima resposta 31 de mai. de 2019
Respostas 8
Participantes 3