Estou atualmente tentando fazer um sistema de Cadastro de produtos, com opção para alterar e excluir produtos.
O meu problema é que quando eu tento fazer o cadastro do produto no Postgresql ele simplesmente não vai.
Usei o debug para descobrir exatamente onde o erro acontece e o resultado é o encontrado abaixo.
O que pode ser o problema?
Meu script para o banco de dados:
create table Produto(
idproduto serial primary key,
nomeProduto varchar(255) not null,
descproduto varchar(255) not null,
qtdProduto varchar not null,
valorProduto varchar not null
)
ProdutoDao.java
package dao;
import Model.Produto;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import jdbc.Conexao;
public class ProdutoDao {
private Connection con;
public ProdutoDao() {
this.con = new Conexao().getConnection();
}
public boolean add(Produto p) throws SQLException {
String sql = "insert into produto(nomeproduto, descproduto , qtdproduto, valorproduto) values (?,?,?,?)";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, p.getNome());
stmt.setString(2, p.getDesc());
stmt.setInt(3, p.getQtd());
stmt.setDouble(4, p.getPreco());
stmt.execute();
return true;
} catch (SQLException ex) {
return false;
} finally {
con.close();
}
}
public boolean update(Produto p) throws SQLException {
String sql = " update Produto Set nomeproduto =?, descproduto=? , qtdproduto=?, valorproduto=? where idproduto=?";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, p.getNome());
stmt.setString(2, p.getDesc());
stmt.setInt(3, p.getQtd());
stmt.setDouble(4, p.getPreco());
stmt.setLong(5, p.getId());
stmt.execute();
return true;
} catch (SQLException ex) {
return false;
} finally {
con.close();
}
}
public boolean delete(Produto p) throws SQLException {
String sql = "Delete from Produto where idproduto=?";
try {
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setLong(1, p.getId());
stmt.execute();
return true;
} catch (SQLException ex) {
Logger.getLogger(ProdutoDao.class.getName()).log(Level.SEVERE, null, ex);
return false;
} finally {
con.close();
}
}
public List<Produto> getList() throws SQLException {
List<Produto> produtos = new ArrayList<>();
String sql = "Select * from Produto";
try {
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Produto p = new Produto();
p.setId(rs.getLong("idproduto"));
p.setNome(rs.getString("nomeproduto"));
p.setDesc(rs.getString("descproduto"));
p.setQtd(rs.getInt("qtdproduto"));
p.setPreco(rs.getDouble("valorproduto"));
produtos.add(p);
}
stmt.execute();
System.out.println("Lista Retornada com sucesso");
return produtos;
} catch (SQLException ex) {
System.out.println("Erro, lista nao retornada!");
throw new RuntimeException(ex);
} finally {
con.close();
}
}
}
Qualquer outras classes ou controllers que precisarem posso estar disponibilizando.