Sou iniciante e gostaria de saber se estou no caminho certo em relação a classe DAO
Postei como eu tinha feito minha classe:
public void insere(Produto produto){
conectar();
try {
comando.executeUpdate("INSERT INTO Produto VALUES('"
+ produto.getCodigo() + "','"
+ produto.getGrupo() + "','"
+ produto.getProduto() + "','"
+ produto.getEstoque() + "','"
+ produto.getCusto() + "','"
+ produto.getVenda() + "','"
+ produto.getDataCompra() + "','"
+ produto.getValidade() + "')");
JOptionPane.showMessageDialog(null,"Operação realizada com sucesso!");
} catch (SQLException e) {
imprimeErro("Problemas na operação, verifique se você digitou os campos corretamente!", e.getMessage());
} finally {
fechar();
}
}
Usuario falou que estava certo mas me deu umas dicas:
Nao está utilizando query com ? ou :Id (passando parâmetros), com isso possibilita SQL Injection para web, para Desktop dificulta a leitra e é uma má prática
minha duvida e saber se a dica que ele deu e a mesma que fiz na classe abaixo?
public class ProdutosDAO{
private Connection con;
public DAOProduto(){
this.con = ConexaoMySQL.getConnection(); //aqui pego a conexao da factory, veja q nao preciso conectar e desconectar
}
public void insere(Produto p){
PreparedStatement stm = this.con.prepareStatement("INSERT INTO produtos (codigo,grupo,produto,estoque,custo,venda,datacompra,validade) VALUES (?,?,?,?,?,?,?,?)");
stm.setColumns(1, p.getCodigo());
stm.setStringl(2, p.getGrupo());
stm.setString(3, p.getProduto());
stm.setColumns(4, p.getEstoque()); // setColumns é o certo para usar com numeros inteiros.
stm.setColumns(5, p.getCusto()); // qual o melhor tipo de variavel para preço, se é float ou
stm.setColumns(6, p.getVenda());
stm.setString(7, p.getDataCompra());
stm.setString(8, p.getValidade()); // setString e o melhor para DATAS.
stm.executeUpdate();
stm.close();
}
}
tenho mais uma divida:
setColumns e o certo para numeros inteiros?
setString é o certo para manipular DATA?
qual o melhor tipo para variavel do tipo preço, se é float ou BigDecima, e qual o metodo SET para inserir um valor?