Estou tendo esse problema na hora de executar o TestaInsercaoEListagemComProduto, quando eu executo ele dá essa exceção java.sql.SQLSyntaxErrorException, eu entendi que o erro foi em algum codigo sql, mas eu não acho esse erro e já reassistir umas 3 vezes a aula para ver se eu fiz aluguma coisa errada mas ate onde eu vi não, quem pode me ajudar ficarei grato :)
- TestaInsercaoEListagemComProduto
package br.com.alura.jdbc;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import br.com.alura.jdbc.dao.ProdutoDAO;
import br.com.alura.jdbc.modelo.Produto;
public class TestaInsercaoEListagemComProduto {
public static void main(String[] args) throws SQLException {
Produto comoda = new Produto("Cômoda", "Cômoda vertical");
try (Connection connection = new ConnectionFactory().recuperarConexao()) {
ProdutoDAO produtoDao = new ProdutoDAO(connection);
produtoDao.salvar(comoda);
List<Produto> listaDeProdutos = produtoDao.listar();
listaDeProdutos.stream().forEach(lp -> System.out.println(lp));
}
System.out.println(comoda);
}
}
- ProdutoDAO
package br.com.alura.jdbc.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import br.com.alura.jdbc.modelo.Produto;
public class ProdutoDAO {
private Connection connection;
public ProdutoDAO(Connection connection) {
this.connection = connection;
}
public void salvar(Produto produto) throws SQLException {
String sql = "INSERT INTO PRODUTO (nome, descricao) values (?, ?)";
try(PreparedStatement pstm = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
pstm.setString(1,produto.getNome());
pstm.setString(2, produto.getDescricao());
pstm.execute();
try(ResultSet rst = pstm.getGeneratedKeys()) {
while(rst.next()) {
produto.setId(rst.getInt(1));
}
}
}
}
public List<Produto> listar() throws SQLException {
List<Produto> produtos = new ArrayList<Produto>();
String sql = "SELECT ID, NOME, DESCRICAO FROM PRODUTOS";
try(PreparedStatement pstm = connection.prepareStatement(sql)) {
pstm.execute();
try(ResultSet rst = pstm.getResultSet()) {
while (rst.next()) {
Produto produto = new Produto(rst.getInt(1), rst.getString(2), rst.getString(3));
produtos.add(produto);
}
}
}
return produtos;
}
}
- Produto
package br.com.alura.jdbc.modelo;
public class Produto {
private Integer id;
private String nome;
private String descricao;
public Produto(String nome, String descricao) {
super();
this.nome = nome;
this.descricao = descricao;
}
public Produto(Integer id, String nome, String descricao) {
this.id = id;
this.nome = nome;
this.descricao = descricao;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public String getDescricao() {
return descricao;
}
@Override
public String toString() {
return String.format("O produto é: %d, %s, %s",
this.id, this.nome, this.descricao);
}
}