MVC ,Pagina Alteração nao altera

4 respostas
R

Amigos estou começando no MVC ou melhor no java,e estou tentando fazer aquele projeto basico (Incluir,alterar e listar)porem o incluir eu ja consegui agora o alterar está dando problema,ele altera apenas o nome passando de minusculo para maiusculo porque uso o toUpper o restante dos dados nao.Vou postar as telas

Tela AlterarVisita

package vis;

import java.sql.*;
import javax.servlet.http.HttpServletRequest;


public class AlterarVisita {
	
	public AlterarVisita(String nome, HttpServletRequest req){
		
		ConexaoDAO conexao = new ConexaoDAO();
		
		
		  String sql = "SELECT * from portal where nome = '" + nome + "'" ;
		  	
			ResultSet rs;
			try {

				rs = ConexaoDAO.executeQuery(sql);

				rs.next();
				String nomeLido = 	 rs.getString("nome");
				String empresaLido = rs.getString("empresa");
				String dctoLido =	 rs.getString("dcto");
				String tipoLido =	 rs.getString("tipo");
				String ddd_telLido = rs.getString("ddd_tel");
				String telefoneLido =rs.getString("telefone");
				String ddd_celLido = rs.getString("ddd_cel");
				String celularLido = rs.getString("celular");


				VisitaBean visitabeanInterno = new VisitaBean();
				
				visitabeanInterno.setNome(nomeLido);
				visitabeanInterno.setEmpresa(empresaLido);
				visitabeanInterno.setDcto(dctoLido);
				visitabeanInterno.setTipo(tipoLido);
				visitabeanInterno.setDdd_tel(ddd_telLido);
				visitabeanInterno.setTelefone(telefoneLido);
				visitabeanInterno.setDdd_cel(ddd_celLido);
				visitabeanInterno.setCelular(celularLido);
						
				String update ="update portal set nome='"+nomeLido.toUpperCase()+"'"+","
						+"empresa ='"+empresaLido+"'"+","
						+"ddd_tel ='"+ddd_telLido+"',"
						+"telefone ='"+telefoneLido+"',"
						+"ddd_cel ='"+ddd_celLido+"',"
						+"dcto ='"+dctoLido+"',"
						+"celular ='"+celularLido+"',"
						+"tipo ='"+tipoLido+"'where nome ='"+nome+"'";
				
	req.setAttribute("beanCarregado",visitabeanInterno);
	
				ConexaoDAO.executeQuery(sql);
				ConexaoDAO.executeUpdate(update);
				}catch (SQLException sqle) {
							sqle.printStackTrace();
				}
		}
}

Tela do Controlador

package vis;

import java.io.*;
import java.util.Vector;
import javax.servlet.*;
import javax.servlet.http.*;

public class Controlador extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

		String cmd           		          = req.getParameter("cmd");
		String nome      			 = req.getParameter("nome");
		String empresa    		      = req.getParameter("empresa");
		String dcto				  = req.getParameter("dcto");
		String tipo				   = req.getParameter("tipo");
		String ddd_tel				= req.getParameter("ddd_tel");
		String telefone				= req.getParameter("telefone");
		String ddd_cel			       = req.getParameter("ddd_cel");
		String celular				= req.getParameter("celular");
		
		String pagina  		 		= null;

		try{
						
			if (cmd.equals("inclusao")){
				 
				// Carrega o bean com os dados do formulario
				VisitaBean visitabean = new VisitaBean(nome ,empresa ,dcto ,tipo, ddd_tel, telefone, ddd_cel, celular);
				
				IncluirVisita incluirVisita = new IncluirVisita(visitabean);
			    req.setAttribute("beanCarregado",visitabean);

				pagina  = "/InclusaoOK.jsp"; 

								
				
			} else if (cmd.equals("alteracao")){ 
				VisitaBean visitabean = new VisitaBean(nome ,empresa ,dcto ,tipo, ddd_tel, telefone, ddd_cel, celular);

	           	   AlterarVisita alterarVisita = new AlterarVisita(nome,req);
				    req.setAttribute("beanCarregado",visitabean);

	           		pagina  = "/AlteracaoOK.jsp";

	           		
	    	
	           		
        	} else if (cmd.equals("lista")){ 
        		VisitaBean visitabean = new VisitaBean(nome ,empresa ,dcto ,tipo, ddd_tel, telefone, ddd_cel, celular);
	
                  Vector listaVisita = ConexaoDAO.exibirVisita(req);
               		req.setAttribute("beanCarregado", listaVisita);
               		//req.setAttribute("nome", nome);

				pagina  = "/Imprime.jsp";
			}
        	this.Redirecionar(req, res, pagina);

	    }
	    catch(Exception e){
			Redirecionar(req, res, "/Erro.jsp");
	    }
	}
	
	private void Redirecionar(HttpServletRequest req, HttpServletResponse res, String pagina) throws ServletException, IOException {
	 	RequestDispatcher  rd = getServletContext().getRequestDispatcher(pagina);
	 	rd.forward(req,res);
	}	
}

Tela ConexaoDAO

package vis;

import java.sql.*;
import java.util.Vector;
import javax.servlet.http.HttpServletRequest;
import vis.VisitaBean;

public class ConexaoDAO {

	private static Connection connection;
	private static Statement statement;
	
	
	public ConexaoDAO(){

	try {

		Class.forName("org.postgresql.Driver");
	connection = DriverManager.getConnection  ("jdbc:postgresql://19.4.6.11:5432/portaria","fxp","ftx");

	} catch (ClassNotFoundException ex) {
	
	System.out.println("Nao foi possivel encontrar a classe do Driver do sql");

	} catch (SQLException ex) {

	System.out.println("Nao foi possivel conectar ao servidor");

	}

	try {
	
	statement = connection.createStatement();

	} catch (SQLException ex) {

	System.out.println("Nao foi possivel criar a statement");
	}
}
	
	

public static void executeUpdate(String update) throws SQLException {

	try {
	
	statement.executeUpdate(update);
	
	} catch (SQLException ex) {
		System.out.println("NAO !!! EStou saindo e por aqui!!!!, do Catch do ConexaoDAO");
	throw ex;
	}
}


public static ResultSet executeQuery(String query)throws SQLException {

		System.out.println("Passei por aqui, executeQuery de ConexaoDAO !!!");
	try {
	
	ResultSet rs = statement.executeQuery(query);
	return rs;
		
	} catch (SQLException ex) {
	
	System.out.println("Nao foi possivel executar a query!");
	throw ex;
	}
}




	public static Vector exibirVisita (HttpServletRequest req) throws Exception {
		String nome = req.getParameter( "nome" );
		String sql = "SELECT nome.nome, nome.empresa, nome.dcto, nome.tipo,nome.ddd_tel, nome.telefone, nome.ddd_cel, nome.celular " +
		"FROM portal AS nome WHERE nome.nome= " + nome + " ORDER BY nome.empresa";
    	ResultSet rs = ConexaoDAO.executeQuery(sql);
        	Vector listagem = new Vector();

	while (rs.next()){
			VisitaBean lista = new VisitaBean();
		lista.setNome(rs.getString("nome"));
		lista.setEmpresa(rs.getString("empresa"));
		lista.setDcto(rs.getString("dcto"));
		lista.setTipo(rs.getString("tipo"));
		lista.setDdd_tel(rs.getString("ddd_tel"));
		lista.setTelefone(rs.getString("telefone"));
		lista.setDdd_cel(rs.getString("ddd_cel"));
		lista.setCelular(rs.getString("celular"));
		
		listagem.add(lista);
		}	
	return listagem;
}

/**
* Fecha a conexao com a base de dados.
*/
public void fecharConexao(){

	try {
	
	statement.close();
	connection.close();
	
	} catch (SQLException ex) {
	
	ex.printStackTrace();
	}
   }
  }

4 Respostas

Pedrosa

Qual o erro gerado no console

Algumas dicas, não use Vector para retornar uma lista de Objetos use List e ArrayList:

List<Usuario> usuarios = new ArrayList<Usuario>();

Sempre use PreparedStament e passe o codigo do Cliente não o nome para ser alterado no update no where.

String SQL ="update portal set nome=?,empresa =?,ddd_tel =? where id=?
PreparedStatement pstmt = conn.prepareStatement(SQL);
//seta o tipo e a ordem dos ?
//nao precisa se preocupar com as aspas na querys pois ja setou o tipo, o driver se vira
pstmt.setString(1, nome;
pstmt.setString(2, empresa);
pstmt.setInt(3, ddd);
pstmt.setInt(4, id);
...

No Java os metodos sempre começam com letra minusculas ex: redirecionar, cuidado as utilizar esses metodos statics nos DAOS, o seu DAO não precisa ter nada HttpServletRequest, passe os parametros por exemplo:

new ClasseDAO.altera(cliente);

Pegue o e.printStackTrace(); do metodo update e veja qual é o erro gerado, tente fazer essas alterações vai ficar mas facil para manter o código.

R

Obrigado pelas dicas,vou dar uma estudada no prepared pra fazer dessa forma.
Quanto ao erro : Ao clicar no botao alterar ele me manda para uma pagina que eu criei mostrando tudo que alterei,mas quando vou no BD está tudo do mesmo jeito.
Apenas o nome que passa pra maiusculo por causa do toUpper que usei,o restante não tem nada alterado.’:shock:’

Pedrosa

O que vai realmente garantir que o dado que vc alterou é o correto é codigo, se existirem registros duplicados como fica, por exemplo ter 2 pessoas com o mesmo nome.

Imprima a query e a execute no PGAdmin e veja se esta sendo alterada mesmo o registro.

System.out.println("query " + update);

Na sua classe AlterarVisita por que vc usa essas 2 linhas:

ConexaoDAO.executeQuery(sql);  


//só essa deve ficar
ConexaoDAO.executeUpdate(update);

Retire esse request daqui na mesma classe

// no dao nao precisa disso
req.setAttribute("beanCarregado",visitabeanInterno);

No Controlador passe no request o cliente que deve ser obtido atraves de um método que vai pegar o registro alterado

req.setAttribute("cliente",new ClasseDAO.getCliente(id));

E no JSP:

Nome = ${cliente.nome} 
Empresa= ${cliente.empresa.nome}
G
talvez se vc adicionar um
comit();
dps d executar o
executeupdate();
Criado 3 de fevereiro de 2009
Ultima resposta 3 de fev. de 2009
Respostas 4
Participantes 3