Problemas com método UPDATE em JDBC

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.

[code]
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);
	}
}

}[/code]

Esse é o m[étodo main:

[code]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!!");

 
}

}[/code]

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

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 ?

coloca o stack trace ae

[quote]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 ? [/quote]
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());