Tento alterar dados e pede a declaração da variável escalar!

Estou tentando alterar dados e dá uma erro em que necessita da declaração da variável escalar!
Este erro se encontra na minha DAO, no método alterar, que esta logo abaixo:

	public int alterar (Contratos contrato ){
		
		Connection con = new ConexaoDao().conectar();
		PreparedStatement pstm =null;
		ResultSet rs = null;
		int resultado = 0;
		
		try {
			pstm = con.prepareStatement(
				"UPDATE CONTRATO SET sTipoCadastro=?, iNumeroContrato=?, sNumeroProcesso=?," +
						"dtPropostaEmpresa=?, dtPrazoExecucao=?, dtPrazoGarantiaExecucao=?," +
						"nValorMensal=?, nValorGlobal=?, nDescontoOferecido=?, iNumeroLancamentoSIAFI=?," +
						"dtPrazoPagamento=?, dtDuracaoContrato=?, dtInicioVigencia=?, dtTerminoVigencia=?," +
						"dtAssinatura=?, sDescricaoObjeto=?" +
				"WHERE iCodigo=?");
			
			pstm.setString(1, contrato.getsTipoCadastro());
			pstm.setString(2, contrato.getiNumeroContrato());
			pstm.setString(3, contrato.getsNumeroProcesso());
			pstm.setString(4, contrato.getDtPropostaFornecedor());
			pstm.setString(5, contrato.getDtPrazoExecucao());
			pstm.setString(6, contrato.getDtPrazoGarantiaExecucao());
			pstm.setString(7, contrato.getnValorMensal());
			pstm.setString(8, contrato.getnValorGlobal());
			pstm.setString(9, contrato.getnDescontoOferecido());
			pstm.setString(10,contrato.getDtPrazoPagamento());
			pstm.setString(11, contrato.getiNumeroLancamentoSIAFI());
			pstm.setString(12, contrato.getDtDuracaoContrato());
			pstm.setString(13, contrato.getDtInicioVigencia());
			pstm.setString(14, contrato.getDtTerminoVigencia());
			pstm.setString(15, contrato.getDtAssinatura());
			pstm.setString(16, contrato.getsDescricaoObjeto());
			pstm.setInt(17, contrato.getiCodigo());	
			
			resultado = pstm.executeUpdate();
			con.close();
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, "Erro no Metodo alterarContrato!");
			System.out.println("Erro no Metodo alterarContrato!");
			e.printStackTrace();
		}
		return resultado;
	}
}

Erro:

Erro no Metodo alterarContrato!
com.microsoft.sqlserver.jdbc.SQLServerException: É necessário declarar a variável escalar “@P15WHERE”.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:156)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1373)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:371)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:322)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4003)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1550)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:160)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:133)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:290)
at dao.ContratosDao.alterar(ContratosDao.java:197)
at servlet.ServletAlteraContrato.doPost(ServletAlteraContrato.java:77)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)

Ainda diz que o erro esta ai na linha 36, onde tem o executeUpdate

Se alguém puder me ajudar!!!

A concatenação da sua instrução SQL antes da clausula WHERE você não colocou um espaço, e, portanto, ele está colocando ‘@P15’ + ‘WHERE’

Esse ‘@P15’ deve ser alguma informação de ‘contrato.getsDescricaoObjeto()’;

[quote=alvarofederal]Estou tentando alterar dados e dá uma erro em que necessita da declaração da variável escalar!
Este erro se encontra na minha DAO, no método alterar, que esta logo abaixo:

	public int alterar (Contratos contrato ){
		
		Connection con = new ConexaoDao().conectar();
		PreparedStatement pstm =null;
		ResultSet rs = null;
		int resultado = 0;
		
		try {
			pstm = con.prepareStatement(
				"UPDATE CONTRATO SET sTipoCadastro=?, iNumeroContrato=?, sNumeroProcesso=?," +
						"dtPropostaEmpresa=?, dtPrazoExecucao=?, dtPrazoGarantiaExecucao=?," +
						"nValorMensal=?, nValorGlobal=?, nDescontoOferecido=?, iNumeroLancamentoSIAFI=?," +
						"dtPrazoPagamento=?, dtDuracaoContrato=?, dtInicioVigencia=?, dtTerminoVigencia=?," +
						"dtAssinatura=?, sDescricaoObjeto=?" +
				"WHERE iCodigo=?");
			
			pstm.setString(1, contrato.getsTipoCadastro());
			pstm.setString(2, contrato.getiNumeroContrato());
			pstm.setString(3, contrato.getsNumeroProcesso());
			pstm.setString(4, contrato.getDtPropostaFornecedor());
			pstm.setString(5, contrato.getDtPrazoExecucao());
			pstm.setString(6, contrato.getDtPrazoGarantiaExecucao());
			pstm.setString(7, contrato.getnValorMensal());
			pstm.setString(8, contrato.getnValorGlobal());
			pstm.setString(9, contrato.getnDescontoOferecido());
			pstm.setString(10,contrato.getDtPrazoPagamento());
			pstm.setString(11, contrato.getiNumeroLancamentoSIAFI());
			pstm.setString(12, contrato.getDtDuracaoContrato());
			pstm.setString(13, contrato.getDtInicioVigencia());
			pstm.setString(14, contrato.getDtTerminoVigencia());
			pstm.setString(15, contrato.getDtAssinatura());
			pstm.setString(16, contrato.getsDescricaoObjeto());
			pstm.setInt(17, contrato.getiCodigo());	
			
			resultado = pstm.executeUpdate();
			con.close();
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, "Erro no Metodo alterarContrato!");
			System.out.println("Erro no Metodo alterarContrato!");
			e.printStackTrace();
		}
		return resultado;
	}
}

Erro:

Erro no Metodo alterarContrato!
com.microsoft.sqlserver.jdbc.SQLServerException: É necessário declarar a variável escalar “@P15WHERE”.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:156)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1373)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:371)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:322)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4003)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1550)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:160)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:133)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:290)
at dao.ContratosDao.alterar(ContratosDao.java:197)
at servlet.ServletAlteraContrato.doPost(ServletAlteraContrato.java:77)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)

Ainda diz que o erro esta ai na linha 36, onde tem o executeUpdate

Se alguém puder me ajudar!!![/quote]

Não tenho muita experiência. Mas creio que o erro seja um desses 2.

  1. resultado = pstm.executeUpdate(); O comando deve ser pstm.execute();
    ou
  2. con.close(); o comando certo é pstm.close();

Boam dia pessoal, só pude ver hoje suas respostas.
IBISPO, poderia ser mais claro na sua colocação, não consegui entender, acho que se for mais claro consigo corrigir.

ricjorge87, esse codigo que uso, é baseado em um outro exemplo que tenho, e da forma que ele se encontra, no outro funciona perfeitamente.

Agora o que não consigo entender é por que ele dá esse erro em negrito:

Erro no Metodo alterarContrato!
com.microsoft.sqlserver.jdbc.SQLServerException: É necessário declarar a variável escalar “@P15WHERE”.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:156)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1373)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:371)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:322)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4003)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1550)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:160)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:133)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:290)
at dao.ContratosDao.alterar(ContratosDao.java:195)
at servlet.ServletAlteraContrato.doPost(ServletAlteraContrato.java:77)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)

Se vocês ou alguma outra pessoa puder me ajudar a sanar esse problema.

Boa noite Alvaro,

o ibispo quis dizer que faltou um espaço no SQL. Faltou espaço antes do WHERE.

na hora que executa, o SQL está ficando assim: “… sDescricaoObjeto=algumacoisaWHERE iCodigo=outracoisa”

Outra dica: utilize o bloco finally{} para fechar o ResultSet, o PreparedStatement e a Connection, nesta ordem. Por que? porque se ocorrer alguma exceção, a conexão com o banco não fica pendurada (podendo provocar problemas maiores como lentidão ou queda do servidor no caso de muitos acessos)

Bom dia rock, eu achei o que você explicou, tinha um parentese lá fechando não sei o que, rsrs.
Não aparece mais o pedido de declarar uma variável escalar.
mas ainda assim continua com um erro grave. Retorna null dentro dos campos onde deveria aparecer o dado que é retornado do banco, quando eu peço para alterar.
E aparece esses dois erros:

1º erro:
GRAVE: Error starting static Resources
java.lang.IllegalArgumentException: Document base C:\Users\ALVAROFEDERAL\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\sicons does not exist or is not a readable directory
at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4319)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4488)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

2ºErro:
GRAVE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.alterar_jsp._jspService(alterar_jsp.java:98)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)

Não sei mais o qeu fazer para sanar esse null no textfield de alteração.
Aguardo ancioso por auxilio.

alvarofederal,

coloque aqui os trechos da sua camada view (.jsp) que vc está usando para gravar, bem como sua classe java de gravação para que possamos te ajudar.

Blz.
Aqui esta meu método alterar:

public int alterar(Contratos contrato) {

		Connection con = new ConexaoDao().conectar();
		PreparedStatement pstm = null;
		int resultado = 0;

		try {
			pstm = con.prepareStatement
			("UPDATE CONTRATO SET sTipoCadastro=?, iNumeroContrato=?, sNumeroProcesso=?," +
					"dtPropostaFornecedor=?, dtPrazoExecucao=?, dtPrazoGarantiaExecucao=?," +
					"nValorMensal=?, nValorGlobal=?, nDescontoOferecido=?, iNumeroLancamentoSIAFI=?," +
					"dtPrazoPagamento=?, dtDuracaoContrato=?, dtInicioVigencia=?, dtTerminoVigencia=?," +
					"dtAssinatura=?, sDescricaoObjeto=? WHERE iCodigo=?");
				
			pstm.setString(1, contrato.getsTipoCadastro());
			pstm.setString(2, contrato.getiNumeroContrato());
			pstm.setString(3, contrato.getsNumeroProcesso());
			pstm.setString(4, contrato.getDtPropostaFornecedor());
			pstm.setString(5, contrato.getDtPrazoExecucao());
			pstm.setString(6, contrato.getDtPrazoGarantiaExecucao());
			pstm.setString(7, contrato.getnValorMensal());
			pstm.setString(8, contrato.getnValorGlobal());
			pstm.setString(9, contrato.getnDescontoOferecido());
			pstm.setString(10,contrato.getDtPrazoPagamento());
			pstm.setString(11, contrato.getiNumeroLancamentoSIAFI());
			pstm.setString(12, contrato.getDtDuracaoContrato());
			pstm.setString(13, contrato.getDtInicioVigencia());
			pstm.setString(14, contrato.getDtTerminoVigencia());
			pstm.setString(15, contrato.getDtAssinatura());
			pstm.setString(16, contrato.getsDescricaoObjeto());
			pstm.setInt(17, contrato.getiCodigo());		
			resultado = pstm.executeUpdate();
			con.close();
		} catch (SQLException e) {
			System.out.println("Erro! metodo alterar!");
			e.printStackTrace();
		}
		return resultado;
	}
	

E aqui esta meu ServletAlteraContrato:

protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		Contratos contrato = new Contratos();
		contrato.setiCodigo(Integer.parseInt(request.getParameter("iCodigo")));

		ContratosDao ad = new ContratosDao();
		contrato = ad.consultar(contrato);
		if (contrato != null) {
			request.getSession(true).setAttribute("contrato", contrato);
			response.sendRedirect("alteraContrato.jsp");
		} else {
			response.sendRedirect("erro.html");
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		Contratos contrato = new Contratos();

		contrato.setiCodigo(Integer.parseInt(request.getParameter("iCodigo")));
		contrato.setsTipoCadastro(request.getParameter("sTipoCadastro"));
		contrato.setiNumeroContrato(request.getParameter("iNumeroContrato"));
		contrato.setsNumeroProcesso(request.getParameter("sNumeroProcesso"));
		contrato.setDtPropostaFornecedor(request.getParameter("dtPropostaFornecedor"));
		contrato.setDtPrazoExecucao(request.getParameter("dtPrazoExecucao"));
		contrato.setDtPrazoGarantiaExecucao(request.getParameter("dtPrazoGarantiaExecucao"));
		contrato.setnValorGlobal(request.getParameter("nValorGlobal"));
		contrato.setnValorMensal(request.getParameter("nValorMensal"));
		contrato.setnDescontoOferecido(request.getParameter("nDescontoOferecido"));
		contrato.setDtPrazoPagamento(request.getParameter("dtPrazoPagamento"));
		contrato.setiNumeroLancamentoSIAFI(request.getParameter("iNumeroLancamentoSIAFI"));
		contrato.setDtDuracaoContrato(request.getParameter("dtDuracaoContrato"));
		contrato.setDtInicioVigencia(request.getParameter("dtInicioVigencia"));
		contrato.setDtTerminoVigencia(request.getParameter("dtTerminoVigencia"));
		contrato.setDtAssinatura(request.getParameter("dtAssinatura"));
		contrato.setsDescricaoObjeto(request.getParameter("sDescricaoObjeto"));

		ContratosDao ad = new ContratosDao();

		if (ad.alterar(contrato) > 0) {
			List<Contratos> lista = new ArrayList<Contratos>();
			lista = ad.listar();
			request.getSession(true).setAttribute("lista", lista);
			response.sendRedirect("consultaContrato.jsp");
		} else {
			response.sendRedirect("erro.html");
		}
	}

e aqui minha jsp alteraContrato.jsp

<%@page import="dao.ContratosDao"%>
<%@page import="beans.Contratos"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>..::ALTERAÇÃO DO CONTRATO::..</title>
</head>
<body>
<center><h2>ALTERAR DE CONTRATO</h2></center><br>
<a href="index.html">HOME</a>
<a href="insereContrato.html">INCLUIR</a>
<a href="alteraContrato.jsp">ALTERAR</a>
<a href="ServletConsultaContrato">CONSULTAR</a>
<a href="insereContrato.html">VOLTAR</a>
<%
	Contratos contrato = new Contratos();
	contrato = (Contratos) request.getSession().getAttribute("contrato");
%>
<form action="ServletAlteraContrato" method="post">
<input type="hidden" name="iCodigo" value=<%=contrato.getiCodigo()%>><br>
Tipo de Cadastro:<input type="text" name="sTipoCadastro" maxlength="20" 
								value=<%=contrato.getsTipoCadastro()%>><br>
Número do Contrato:<input type="text" name="iNumeroContrato" maxlength="20" 
								value=<%=contrato.getiNumeroContrato()%>><br>								
Número do Processo:<input type="text" name="sNumeroProcesso" maxlength="20" 
								value=<%=contrato.getsNumeroProcesso()%>><br>
Data de Proposta da Empresa:<input type="text" name="dtPropostaFornecedor" maxlength="10" 
								value=<%=contrato.getDtPropostaFornecedor()%>><br>
Prazo de Execução:<input type="text" name="dtPrazoExecucao" maxlength="10"  
								value=<%=contrato.getDtPrazoExecucao()%>><br>
Prazo de Garantia de Execução:<input type="text" name="dtPrazoGararantiaExecucao" maxlength="10" 
								value=<%=contrato.getDtPrazoGarantiaExecucao()%>><br>
Valor Mensal do Contrato:<input type="text" name="nValorMensal" maxlength="11" 
								value=<%=contrato.getnValorMensal()%>><br>
Valor Global do Contrato:<input type="text" name="nValorGlobal" maxlength="11" 
								value=<%=contrato.getnValorGlobal()%>><br>
Desconto Oferecido:<input type="text" name="nDescontoOferecido" maxlength="11" 
								value=<%=contrato.getnDescontoOferecido()%>><br>
Prazo de Pagamento:<input type="text" name="dtPrazoPagamento" maxlength="10" 
								value=<%=contrato.getDtPrazoPagamento()%>><br>
Número da Nota de Lançamento do SIAFI:<input type="text" name="iNumeroLancamentoSIAFI" maxlength="7" 
								value=<%=contrato.getiNumeroLancamentoSIAFI()%>><br>
Duração do Contrato:<input type="text" name="dtDuracaoContrato" maxlength="10" 
								value=<%=contrato.getDtDuracaoContrato()%>><br>
Início da Vigência do Contrato:<input type="text" name="dtInicioVigencia" maxlength="10"  
								value=<%=contrato.getDtInicioVigencia()%>><br>
Término da Vigência do Contrato:<input type="text" name="dtTerminoVigencia" maxlength="10" 
								value=<%=contrato.getDtTerminoVigencia()%>><br>
Data de Assinatura:<input type="text" name="dtAssinatura" maxlength="10" 
								value=<%=contrato.getDtAssinatura()%>><br>
Descrição do Objeto:<input type="text" name="sDescricaoObjeto" maxlength="120" 
								value=<%=contrato.getsDescricaoObjeto()%>><br>								

<input type="submit" value="Alterar">
<input type="reset" value="Limpar">

</form>
</body>
</html>

Valeu pela força.

Algumas coisas:

  1. Dentro da sua ServletAlteraContrato.java vc chegou (debug) se o objeto ‘contrato’ possui informações?

request.getSession(true).setAttribute("contrato", contrato);

procure colocar request.getSession(false) para que o Java não crie nova sessão.

&lt;input type="text" name="sTipoCadastro" maxlength="20" value=&lt;%=contrato.getsTipoCadastro()%&gt;&gt;<br>
Procure colocar os conteúdos scriptlet do atributo value entre aspas:

&lt;input type="text" name="sTipoCadastro" maxlength="20" value="&lt;%=contrato.getsTipoCadastro()%&gt;"&gt;<br>

  1. Como você está fazendo para converter seus dados numéricos, double? Vi pelo nome dos métodos setnValorGlobal(), setnValorMensal() que devem se referir a valores.

Esse ‘sicons’ lhe parece algo familiar?

Valeu mais uma vez pelas dicas.
Agora estou com outro problema.
No mesmo código.
Agora consigo trazer os dados para a tela, mas aparece o seguinte erro:

Erro no Metodo alterarContrato!
com.microsoft.sqlserver.jdbc.SQLServerException: Não é possível inserir o valor NULL na coluna ‘dtPrazoGarantiaExecucao’, tabela ‘CONTRATOS.dbo.CONTRATO’; a coluna não permite nulos. Falha em UPDATE.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:156)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1373)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:371)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:322)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4003)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1550)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:160)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:133)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:290)
at dao.ContratosDao.alterar(ContratosDao.java:190)
at servlet.ServletAlteraContrato.doPost(ServletAlteraContrato.java:80)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)

Ainda aparece mais coisas abaixo, mas acho que por ai já dá pra identificar. Grifei a mensagem.

Bom, quanto as dicas:

  1. Me perdõe a ignorância, mas acredite, não sei fazer um debug.
  2. Eu deixei true, e ainda assim funciona.
  3. Essa daí foi fundamental, coloquei entre aspas e funcionou muito bem.
  4. Ainda não estou convertendo, estou com todas em string.
  5. Isso é o nome do meu sistema, mas mudei pra poder fazer testes, e aparece isso, não si por que, e outra, não existe esse diretório, não sei como listou isso e nem sei por que listou ele.

Valeu mais uma vez, sua ajuda esta sendo de grande valia pra mim.
Até mais e fica com Deus.

A falha apresentada acima é meio auto-explicativa, ou seja, esse campo é NOT NULL no banco de dados e está se tentando gravar conteúdo NULL no mesmo.

Para isso, intercepte o atributo que preenche esse campo no seu codigo java e visualize seu conteudo.

Dica:
Seria importante vc começar a estudar sobre debug, pois isso é fundamental para pegar esses bugs.

Agora, se vc ainda não ‘debuga’, faça o teste colocando vários System…println() e acompanhe no console os resultados. Isso dá um trabalhão, mas resolve enquanto vc não conhecer debug.

public class suaClasse() {

     public void seuMetodoDeGravacao() {

          String a = "xyz...";
          .
          .
          .
          .
          System.out.println( "Variavel a (primeiro momento) " + a );
          .
          .
          .
          System.out.println( "Variavel a (segundo momento)" + a );
          .
          .
          . e assim por diante
          .
          .
          .
     }

}

Volto a dizer: Estude sobre debug e como usar.