Por conveniência, estou utilizando o MYSQL 5.7, e a SQL abaixo não funciona:
CREATE TABLE Produto (id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, nome VARCHAR(255), descricao VARCHAR(255));
Para substituí-la, usei a seguinte:
CREATE TABLE Produto ( id INTEGER NOT NULL auto_increment PRIMARY KEY, nome VARCHAR(255), descricao VARCHAR(255));
Porém, o comando
String id = resultSet.getString("id");
do método adiciona da classe "Testa Inserção" me retorna a seguinte mensagem de erro:
Exception in thread "main" java.sql.SQLException: Column 'id' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1077)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5192)
at br.caelum.com.jdbc.TestaInsercao.adiciona(TestaInsercao.java:32)
at br.caelum.com.jdbc.TestaInsercao.main(TestaInsercao.java:17)
Código da classe "Testa Inserção" COMPLETO:
package br.caelum.com.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestaInsercao {
public static void main(String[] args) throws SQLException {
Connection connection = Database.getConnection();
String sql = "insert into Produto (nome, descricao) values (?, ?)";
PreparedStatement statement = connection.prepareStatement(sql,
Statement.RETURN_GENERATED_KEYS);
adiciona("TV LCD", "32''", statement);
adiciona("Blue Ray", "Full HDMI", statement);
statement.close();
connection.close();
}
private static void adiciona(String nome, String descricao,
PreparedStatement statement) throws SQLException {
statement.setString(1, nome);
statement.setString(2, descricao);
boolean resultado = statement.execute();
System.out.println(resultado);
ResultSet resultSet = statement.getGeneratedKeys();
while (resultSet.next()) {
String id = resultSet.getString("id");
System.out.println(id + " gerado");
}
resultSet.close();
}
}
Grato.