Erro Statement.RETURN_GENERATED_KEYS

3 respostas
V

Boa tarde estou tentando utilizar [color=red]Statement.RETURN_GENERATED_KEYS[/color], porém estou tendo dificuldade, observem o erro:

Minha tabela possui os campos: id, cod_produto, cod_produto_brinde

Connection conexao = Conexao.getConnection();
		
		Statement stmt = conexao.createStatement();
		
		boolean resultado = stmt.execute("INSERT INTO brindes (cod_produto, cod_produto_brinde) VALUES (123, 123)", Statement.RETURN_GENERATED_KEYS);
			
		ResultSet rs = stmt.getGeneratedKeys();
		
		while(rs.next()) {
			int id = rs.getInt("id");
					
			System.out.println(id);
		}

O erro retornado é:

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: O nome de coluna id não é válido.
	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
	at com.microsoft.sqlserver.jdbc.SQLServerResultSet.findColumn(SQLServerResultSet.java:625)

3 Respostas

matheusgeres

Olá, vrnkl.

Você possui o script de criação da sua tabela? Ficará mais fácil de te ajudar.

Mas a princípio você não precisaria realizar desta forma não, apenas invocando o método update.

Um abraço.

ViniGodoy

Troque a linha para:

int id = rs.getInt(1);

Muitos drivers podem não retornar o mesmo nome da coluna que está no banco em resposta ao getGeneratedKeys(). A razão para isso é que esse valor pode ser lido diretamente das sequences.

V

ViniGodoy, exatamente isso o ocorrido.

Testei colocando a posição do campo e deu certo.

Existe alguma maneira de retornar utilizando o próprio nome do campo?

Obrigado.

Criado 29 de julho de 2014
Ultima resposta 29 de jul. de 2014
Respostas 3
Participantes 3