Metodo Salvar Crud JAVA

como pode ver essa e tabelo produto que consta no meu banco de dados;

SELECT TOP (1000) [idProduto]
      ,[idUsuario]
      ,[idCategoria]
      ,[idLote_Produto]
      ,[idLoja]
      ,[idFornecedor]
      ,[preco]
      ,[qtd_estoque]
      ,[descricao]
      ,[nome]

eu to meio perdido nessa parte, como posso passar paramento no método SALVAR.
quando vou cadastra da erro, devido nao ter passado os idcategoria,idloja etc. como eu poderia ta passando isso null, ou fazendo inserção como combobox.

public void Salvar(ModelUsuario usuario, ModelProduto model) {
        Connection conn = getConexao();
        String sql = "insert into Produto(idUsuario,preco,qtd_estoque,descricao,nome)"
                + "Values(?,?,?,?,?,?,?,?,?)";
        
        try {
            PreparedStatement pst = conn.prepareStatement(sql);
            
            pst.setInt(1, usuario.getIdUsuario());
            pst.setDouble(2, model.getPreco());
            pst.setInt(3, model.getQtd_estoque());
            pst.setString(4, model.getDescricao());
            pst.setString(5, model.getNome());
            
            
            pst.execute();
            JOptionPane.showMessageDialog(null, "Dados Inseridos com Sucesso!");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());

        }

Sempre que estiver dando algum erro, poste o erro. Isso ajuda bastante para identificar o problema.

Você está passando 9 parametros como value “Values(?,?,?,?,?,?,?,?,?)”; e só esta preenchendo 5,
acredito que se mudar para “values(?,?,?,?,?)” irá resolver, é importante lembrar de sempre postar o erro que está dando quando postar algo por aqui.

1 curtida

public void Salvar(ModelUsuario usuario, ModelProduto model) {
  Connection conn = getConexao();
  
  String sql = "insert into Produto(idUsuario,preco,qtd_estoque,descricao,nome)"
    + "Values(?,?,?,?,?)";
  
  try {
    PreparedStatement pst = conn.prepareStatement(sql);
    
    // quando clico no erro controlproduto cai nessa linha do codigo getidusuario, 
    // eu sei que e necessario passar paramentro para idloja, idcategoria e idfornecedor. 
    // tem como passar isso como nulo, se sim!. como?
    
    pst.setInt(1, usuario.getIdUsuario());
    pst.setDouble(2, model.getPreco());
    pst.setInt(3, model.getQtd_estoque());
    pst.setString(4, model.getDescricao());
    pst.setString(5, model.getNome());
    
    pst.execute();
    JOptionPane.showMessageDialog(null, "Dados Inseridos com Sucesso!");
  } catch (SQLException ex) {
    JOptionPane.showMessageDialog(null, ex.getMessage());
  }
}

Sua tabela possui 10 campos. Supondo que o idProduto seja AI, você tem que passar 9 parâmetros para o INSERT e sua tela somente fornece 4.
Ajuste sua tela e método salvar para fornecer a mesma quantidade de parâmetros para seu INSERT na tabela do BD.