Eu fiz igual ao curso, o problema é que agora esta dando erro (baixei o projeto do curso e o erro continuou), ... não sei se é por que estou usando o mySql agora.
Ele diz que a coluna id nao existe, mas ela esta la´:
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| nome | varchar(255) | NO | | NULL | |
| descricao | varchar(255) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
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 {
try (Connection connection = new ConnectionFactory().getConnectionMySQL()) {
connection.setAutoCommit(false);
String sql = "insert into produto (nome, descricao) values (?, ?)";
try (PreparedStatement statement = connection.prepareStatement(sql,
Statement.RETURN_GENERATED_KEYS)) {
adiciona("TV LCD", "32 polegadas", statement);
adiciona("Blueray", "Full HDMI", statement);
connection.commit();
statement.close();
} catch (Exception e) {
connection.rollback();
System.out.println("Rollback efetuado");
e.printStackTrace();
}
}
}
private static void adiciona(String nome, String descricao,
PreparedStatement statement) throws SQLException {
if (nome.equals("Blueray")) {
throw new IllegalArgumentException("Problema ocorrido");
}
statement.setString(1, nome);
statement.setString(2, descricao);
boolean resultado = statement.execute();
System.out.println(resultado);
try (ResultSet generatedKeys = statement.getGeneratedKeys()) {
while (generatedKeys.next()) {
long id = generatedKeys.getLong("id");
// da erro nessa linha
System.out.println("id gerado: " + id);
}
}
}
}
Reposta do Console:
false
Exception in thread "main" java.sql.SQLException: Column 'id' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1080)
at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2570)
at NovoTeste.main(NovoTeste.java:21)