Problemas com método UPDATE em JDBC

3 respostas
arthurgon

Pessoal estou com problemas. Meu método altera(ou atualiza) não tá alterando nada.
Só diz q eu tenho 5 parametros e estou passando 4.
Contei e recontei. Não achei nada.
Esse é o método:
Tenho 4 chaves primarias.

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.sun.rsasign.f;

import casasbahia.relogio.vo.FuncionarioVO;

public class FuncionarioDAO extends DAOBase {

	private static String UPDATE = null;
	

	public FuncionarioDAO() {
		this(null);
	}

	public FuncionarioDAO(Connection connection) {
		super(connection);

		StringBuffer stringBuffer = new StringBuffer();

		

		if (UPDATE == null) {
			stringBuffer.delete(0, stringBuffer.length());
			stringBuffer.append("update LIS_FUN_RPT(");
			stringBuffer
					.append("CD_JORRPT,CD_MSGRPT,ST_LFRPT,CD_LFRPT_VIA_CCH,"
							+ "ST_LFRPT_ICL");
			stringBuffer.append("where CD_EMPGCB AND");
			stringBuffer.append("CD_FILL AND");
			stringBuffer.append("CD_LFRPT_RLG AND");
			stringBuffer.append("CD_EMPGCB_FUN AND");
			stringBuffer.append("CD_FUN");

			UPDATE = stringBuffer.toString();
		}

		

		
	}

	
	// //MÉTODO UTIILIZADO PARA ALTERAR A TABELA funcionarioVO////////
	public boolean atualizar(FuncionarioVO funcionarioVO) throws SQLException {

		PreparedStatement preparedStatement = null;
		Connection conn = null;

		try {
			conn = getConnection();
			preparedStatement = conn.prepareStatement(UPDATE);
			int index = 1;

			preparedStatement.setInt(index++, funcionarioVO.getCodigoJornada());
			preparedStatement
					.setInt(index++, funcionarioVO.getCodigoMensagem());
			preparedStatement.setString(index++, funcionarioVO.getStatus());
			preparedStatement.setInt(index++, funcionarioVO.getViaCracha());
			preparedStatement.setString(index++, funcionarioVO.getStatus());
			preparedStatement.setInt(index++, funcionarioVO.getEmpresa());
			preparedStatement.setInt(index++, funcionarioVO.getFilial());
			preparedStatement.setInt(index++, funcionarioVO.getNumeroRelogio());
			preparedStatement.setInt(index++, funcionarioVO
					.getEmpresaFuncionario());
			preparedStatement.setInt(index++, funcionarioVO.getMatricula());

			int retorno = preparedStatement.executeUpdate();

			if (retorno > 0) {
				return true;
			} else {
				return false;
			}
		} finally {
			close(null, preparedStatement, conn);
		}
	}

	
}

Esse é o m[étodo main:

public class TestaUpdate {
	
	public static void main(String[] args) throws SQLException {
		 
		FuncionarioVO funcionarioVO = new FuncionarioVO();
		 
	
		funcionarioVO.setCodigoJornada(31);
		funcionarioVO.setCodigoMensagem(32);
		funcionarioVO.setStatus("D");
		funcionarioVO.setViaCracha(33);
		funcionarioVO.setTipoAutorizacao("E");
		funcionarioVO.setEmpresa(26);
		funcionarioVO.setFilial(27);
		funcionarioVO.setNumeroRelogio(28);
		funcionarioVO.setEmpresaFuncionario(29);
		funcionarioVO.setMatricula(30);
		
		FuncionarioDAO dao=new FuncionarioDAO();
		
		dao.atualizar(funcionarioVO);
		System.out.println("ALTERADO COM SUCESSO!!");
	
	 
	}

}

Se alguem pude me ajudar...agradeço.
Valeu.

3 Respostas

bosnic

Não entendi

stringBuffer.append(“where CD_EMPGCB AND”);

where o que? não era pra ter algum tipo de comparação, como CD_EMPGCB = :PARAM ?

hudson.negao

coloca o stack trace ae

gilmarcand

Não entendi

stringBuffer.append(“where CD_EMPGCB AND”);

where o que? não era pra ter algum tipo de comparação, como CD_EMPGCB = :PARAM ?


Também não entendi. Cara, para usar o Prepared Statement e substituir os valores com os métosdos setXXX você precisar fazer algo asim:

String sql = "UPDATE TABELA SET CAMPO1 = ?, CAMPO2 = ? WHERE CAMPOKEY = ?"

Aí você substitui o caracter “?” pelos valores que você quiser:

preparedStatement.setString(index++, objeto.getAtributo()); preparedStatement.setInt(index++, objeto.getAtributo2()); preparedStatement.setString(index++, objeto.getAtributo3());

Criado 2 de junho de 2008
Ultima resposta 2 de jun. de 2008
Respostas 3
Participantes 4