Erro Statement.RETURN_GENERATED_KEYS

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

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

[/code]

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)

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.

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.

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.