Update via ODBC Access

8 respostas
A

Boma dia.

estou tentando dar um UPDATE em uma tabela, conforme código abaixo, porém retorna erro:
import java.sql.*;


public class Teste {

	public static void main (String [] args) {
		
		
		Contato contato = new Contato(1,"José","[email removido]","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();
		}
	}
}
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)

O que está faltando?

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

8 Respostas

pmlm

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

A

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?

nel

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.

A

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?

nel

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.

A

Ocorre o seguinte erro:

<blockquote>     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)</blockquote>

Apontando para a seguinte linha:

stmt.execute();

O que será que acontece?

pmlm

Agora reparei que tens UPDADE em vez de UPDATE.

A

… 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.

Criado 12 de novembro de 2009
Ultima resposta 13 de nov. de 2009
Respostas 8
Participantes 3