Update via ODBC Access

Boma dia.

estou tentando dar um UPDATE em uma tabela, conforme código abaixo, porém retorna erro:

[code]import java.sql.*;

public class Teste {

public static void main (String [] args) {
	
	
	Contato contato = new Contato(1,"José","jose@abc.com.br","Rua Tal, 99");
	try {
		
		String sql ="updade contatos set nome = ?, email = ?, endereço = ? where id = ? ";
		
		Connection con = Conexao.getConexao();
		PreparedStatement stmt = con.prepareStatement(sql);
		
		stmt.setString(1,contato.getNome());
		stmt.setString(2, contato.getEmail());
		stmt.setString(3, contato.getEndereço());
		stmt.setLong(4, contato.getId());
		
		stmt.execute();
		stmt.close();

		System.out.println("Gravado!");

		con.close();
	} catch (SQLException e) {
	  e.printStackTrace();
	}
}

}
[/code]

[quote]java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access]Recurso opcional não implementado
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLBindInParameterBigint(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setLong(Unknown Source)
at Teste.main(Teste.java:20)
[/quote]

O que está faltando?

Desde já agradeço a atenção de vocês.

Troca stmt.execute(); por stmt.executeUpdate();

Testei mas o erro ainda persiste.

O erro aponta para a linha onde é passado o valor da cláusula WHERE. Não seria alguma conversão de valor?

Bom dia.

Tens certeza que o id é um long?
O tipo no java deve ser compatível com aquele encontrado na base de dados.

Abraços.

Bom, na base Access o tipo está como “Inteiro Longo”, campo de “Auto Incremento”.

Na classe Contato, o tipo do campo está como long e o método que recebe o valor é “setLong()”.

Será que isso seria um problema?

Boa noite.

Pode ser possível, já que o erro aponta justamente na linha que você seta o long.
Altere de long para int apenas no java e faça o teste.
Abraços.

Ocorre o seguinte erro:

[quote] java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Instrução SQL
inválida. ‘DELETE’, ‘INSERT’, ‘PROCEDURE’, ‘SELECT’ ou ‘UPDATE’ esperado.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(Unknown Source)
at Teste.main(Teste.java:22)[/quote]

Apontando para a seguinte linha:

stmt.execute();

O que será que acontece?

Agora reparei que tens UPDADE em vez de UPDATE.

… mas não é, gajo !!! :oops:

Valeu, agora funcionou.

Bom, só para registro:

O tipo Inteiro Longo no Access equivale ao int em Java.

Obrigado a todos.