Botao alterar dados em sistema de cadastro

Ola amigos, estou com um pequeno probleminha, ja revisei meu codigo varias vezes e naum acho o erro q esta ocorrendo, esse eh um botao para alterar dados no BD mais naum esta funcionando deem uma olhada e veja se consseguem me dar uam ajuda.

public boolean alterar() {
// naum esta alterando
Connection conexao = cMy.conectar();

	if (conexao == null || efId == 0) {
		return false;
	}

	String sql = "UPDATE controle SET efCliente = ?, efCidade = ?, efInstala = ?, efRetirada = ?, efLitros = ?, efTeor = ?, efObserva  =? WHERE efId = ?";

	try {

		PreparedStatement instrucaoSQL = conexao.prepareStatement(sql);

		instrucaoSQL.setString(1, TFCliente.getText());

		instrucaoSQL.setString(2, TFCidade.getText());
		
		SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");

		Date data;
		try {
			data = formatador.parse(TFDataInstala.getText());
			formatador.applyPattern("yyyy-MM-dd");

			String dataInstala = formatador.format(data);

			instrucaoSQL.setString(3, dataInstala);

		} catch (ParseException e) {
			e.printStackTrace();
		}

		if (TFRetirada.getText() == "  /  /    ") {
			instrucaoSQL.setString(4, null);
		} else {

			formatador.applyPattern("dd/MM/yyyy");

			Date data1;
			try {
				data1 = formatador.parse(TFRetirada.getText());
				formatador.applyPattern("yyyy-MM-dd");

				String dataRetira = formatador.format(data1);

				instrucaoSQL.setString(4, dataRetira);

			} catch (ParseException e) {
				e.printStackTrace();
			}
		}

		// litros
		try {

			if (TFLitros.getText().equals("")) {
				instrucaoSQL.setInt(5, 0);
			} else {

				int litro = Integer.parseInt(TFLitros.getText());

				instrucaoSQL.setInt(5, litro);
			}

		} catch (Exception e) {
			JOptionPane.showMessageDialog(this, "Eh numero porra!!!",
					"Erro", JOptionPane.ERROR_MESSAGE);
		}
		// teor
		try {
			if (TFTeor.getText().equals("")) {
				instrucaoSQL.setInt(6, 0);
			} else {

				double teor = Double.parseDouble(TFTeor.getText());

				instrucaoSQL.setDouble(6, teor);
			}
		} catch (Exception e) {
			JOptionPane.showMessageDialog(this, "Eh numero porra!!!",
					"Erro", JOptionPane.ERROR_MESSAGE);
		}

		instrucaoSQL.setString(7, TextAreaObserva.getText());
		
		instrucaoSQL.setInt(8, efId);

		instrucaoSQL.executeUpdate();

		conexao.close();

		return true;

	} catch (SQLException e) {
		return false;
	}

}

se tiverem alguma duvida postem por favor
obrigado

Olá.

Cara, nessa parte:

 String sql = "UPDATE controle SET efCliente = ?, efCidade = ?, efInstala = ?, efRetirada = ?, efLitros = ?, efTeor = ?, efObserva =? WHERE efId = ?"; 

onde tem interrogações,vc quer dizer que nao sabe o q vai ali ou realmente quer gravar interrogacoes no banco?
To sem o Java e IDE e no zoio foi o q deu pra ver…

Valew!!!

tenta usar apenas instrucaoSQL.execute(); ao invés de instrucaoSQL.executeUpdate();

as interrogações vao ser substituidas pelos instrucao.sql conforme os numeros de cada uma, pode ver q tem os numeros antes do objeto q vai ser chamado
instrucaoSQL.setString(1, TFCliente.getText());

instrucaoSQL.setString(2, TFCidade.getText()

Tentei apenas o execute mais naum funcionou, to achando q o erro seja na mascara das datas isso ai ja me deu dor d cabeça nos outros bototes

Boa tarde cara,

Se não me engano, vc não precisa formatar a data antes de gravá-la. Se o campo que irá armazenar a data no seu banco de dados já está definida com o tipo data a gravação será feita sem problemas. Tenta tirar a formatação para verificar. Eu já fiz e foi perfeito.

Espero ter ajudado.

Té mais…

Então, como eu dizia, eu faria da seguinte forma:


instrucaoSQL.setString(3, TFDataInstala.getText()); 

Faça a formatação somente no momento de exibir a data numa consulta.

Té mais…

Sera q isso ira funcionar amigo pois no banco de dados ele esta recebendo um DATE.
agora fico na duvida, tentei colocar do seu jeito mais ainda deu erro, naum sei se ainda eh isso ou pode ser outro erro.

Intao pessoal, achei o erro eh q eu naum estava chamando o efId no botao pesquisar ai ele naum achava o efId na hora de atualizar e retornava false.

muito obrigado por tentarem me ajuda abraço…