Socorro

20 respostas
java
R

Boa, tarde estou precisando fazer o meu TCC em Netbeans e mysql workbench, mas esta dado esse erro. alguém me ajuda por favor preciso resolver até quarta feira.

ERRO AO INSERIR DADOS!/ERRO:JAVA.SQL.SQLEXCEPTION:PARAMETER INDEX OUT OF RANGE(0<1).

.

20 Respostas

R

Ótimo título, muito útil, resumiu toda a sua dúvida. Isso vai te ajudar muito sim…

Pra sabermos onde está o erro você precisa mostrar o código.


Suponho que seja no preparedStatement. Se você quiser adicionar três valores, você deve indicar os três, exemplo:

String sql = "INSERT INTO tabela ("nome", "idade", "profissao") VALUES (?, ?, ?)";
// ...

preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "Rodinei");
preparedStatement.setString(2, "25");
preparedStatement.setString(3, "Programador");

Esse 1, 2 e 3 representam a quantidade de parametros que você passou no VALUES (?, ?, ?) e nas COLUNAS ("nome", "idade", "profissao").

M

Provavelmente vc esta utilizando um loop para preencher seus parametros da sql. No entanto seu contador do loop deve estar sendo inicializado com 0 , mas o correto seria inicia-lo com 1

R

Bom dia em relação aos preparedStatment estão corretos.

R
Eu não estou utilizando loop.

import Modelo.modeloproduto;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JOptionPane;

/**
*

  • @author Rodinei
    */
    public class controleproduto {

    ConexaoBD conex = new ConexaoBD();
    modeloproduto mod = new modeloproduto();

    public void Salvar(modeloproduto mod) {
    
    conex.conexao();
    
    try {
    
    PreparedStatement pst = conex.con.prepareStatement(insert into produtos(Cod_Forn,Descricao,Marca,Tamanho,Cor,Tipo,Quantidade,Valor,Custo)values(?,?,?,?,?,?,?,?,?));
    
    pst.setInt(1, mod.getCod_Prod());
    
    pst.setInt(2, mod.getCod_Forn());
    
    pst.setString(3, mod.getDescricao());
    
    pst.setString(4, mod.getMarca());
    
    pst.setString(5, mod.getTamanho());
    
    pst.setString(6, mod.getCor());
    
    pst.setString(7, mod.getTipo());
    
    pst.setInt(8, mod.getQuantidade());
    
    pst.setDouble(9, mod.getValor());
    
    pst.setDouble(10, mod.getCusto());
    
    pst.execute();
         JOptionPane.showMessageDialog(null, "Dados inseridos com sucesso!");
    
     } catch (SQLException ex) {
         JOptionPane.showMessageDialog(null, "Erro ao inserir dados!/ERRO:" + ex);
     }
    
     conex.desconecta();
    

    }
    }

parte 2.

import Controle.ConexaoBD;

import Controle.controleproduto;

import Modelo.modeloproduto;

import javax.swing.JInternalFrame;

/**
*

  • @author Seclol
    */
    public class Produtos extends javax.swing.JFrame {
modeloproduto mod = new modeloproduto();

controleproduto control = new controleproduto();

ConexaoBD conex = new ConexaoBD();
public Produtos() {
    initComponents();
//deixando o form maxmimizado       
// this.setExtendedState(MAXIMIZED_BOTH);
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jTextField1 = new javax.swing.JTextField();
    jPanelcadastro = new javax.swing.JPanel();
    jButton6 = new javax.swing.JButton();
    btncancelar = new javax.swing.JButton();
    btnsair = new javax.swing.JButton();
    btnexcluir = new javax.swing.JButton();
    btnalterar = new javax.swing.JButton();
    btnsalvar = new javax.swing.JButton();
    btnnovo = new javax.swing.JButton();
    txtpesquisa = new javax.swing.JTextField();
    jScrollPane1 = new javax.swing.JScrollPane();
    jTablepesquisa = new javax.swing.JTable();
    jLabel1 = new javax.swing.JLabel();
    txtcod = new javax.swing.JTextField();
    jLabel2 = new javax.swing.JLabel();
    txtdesc = new javax.swing.JTextField();
    jLabel3 = new javax.swing.JLabel();
    txtmarca = new javax.swing.JTextField();
    jLabel4 = new javax.swing.JLabel();
    cbcor = new javax.swing.JComboBox<>();
    jLabel5 = new javax.swing.JLabel();
    cbtipo = new javax.swing.JComboBox<>();
    jLabel6 = new javax.swing.JLabel();
    txtqtd = new javax.swing.JTextField();
    jLabel7 = new javax.swing.JLabel();
    txtvalor = new javax.swing.JFormattedTextField();
    jLabel8 = new javax.swing.JLabel();
    txtcusto = new javax.swing.JFormattedTextField();
    cbtamanho = new javax.swing.JComboBox<>();
    lbltamanho = new javax.swing.JLabel();

    jTextField1.setText("jTextField1");

    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    setTitle("Cadastro de Produtos");
    setResizable(false);
    addWindowListener(new java.awt.event.WindowAdapter() {
        public void windowActivated(java.awt.event.WindowEvent evt) {
            formWindowActivated(evt);
        }
    });
    getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

    jPanelcadastro.setBackground(new java.awt.Color(153, 255, 255));
    jPanelcadastro.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Cadastro de Produtos", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 1, 18))); // NOI18N

    jButton6.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
    jButton6.setText("Pesquisar");

    btncancelar.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
    btncancelar.setText("Cancelar");
    btncancelar.setEnabled(false);

    btnsair.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
    btnsair.setText("Sair");
    btnsair.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btnsairActionPerformed(evt);
        }
    });

    btnexcluir.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
    btnexcluir.setText("Excluir");
    btnexcluir.setEnabled(false);

    btnalterar.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
    btnalterar.setText("Alterar");
    btnalterar.setEnabled(false);

    btnsalvar.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
    btnsalvar.setText("Salvar");
    btnsalvar.setEnabled(false);
    btnsalvar.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btnsalvarActionPerformed(evt);
        }
    });

    btnnovo.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
    btnnovo.setText("Novo");
    btnnovo.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btnnovoActionPerformed(evt);
        }
    });

    txtpesquisa.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            txtpesquisaActionPerformed(evt);
        }
    });

    jTablepesquisa.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {},
            {},
            {},
            {}
        },
        new String [] {

        }
    ));
    jScrollPane1.setViewportView(jTablepesquisa);

    jLabel1.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
    jLabel1.setText("CÓDIGO");

    txtcod.setEnabled(false);

    jLabel2.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
    jLabel2.setText("DESCRIÇÃO:");

    txtdesc.setEnabled(false);

    jLabel3.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
    jLabel3.setText("MARCA:");

    txtmarca.setEnabled(false);

    jLabel4.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
    jLabel4.setText("COR:");

    cbcor.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "1", "2", "3", "4", " " }));
    cbcor.setEnabled(false);

    jLabel5.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
    jLabel5.setText("TIPO:");

    cbtipo.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "A", "B", "C", "D" }));
    cbtipo.setEnabled(false);

    jLabel6.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
    jLabel6.setText("QUANTIDADE:");

    txtqtd.setEnabled(false);

    jLabel7.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
    jLabel7.setText("VALOR:");

    txtvalor.setEnabled(false);

    jLabel8.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
    jLabel8.setText("CUSTO:");

    txtcusto.setEnabled(false);

    cbtamanho.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
    cbtamanho.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "P", "M", "G", "GG" }));
    cbtamanho.setEnabled(false);

    lbltamanho.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
    lbltamanho.setText("Tamanho:");

    javax.swing.GroupLayout jPanelcadastroLayout = new javax.swing.GroupLayout(jPanelcadastro);
    jPanelcadastro.setLayout(jPanelcadastroLayout);
    jPanelcadastroLayout.setHorizontalGroup(
        jPanelcadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanelcadastroLayout.createSequentialGroup()
            .addGroup(jPanelcadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 765, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanelcadastroLayout.createSequentialGroup()
                    .addGroup(jPanelcadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addGroup(jPanelcadastroLayout.createSequentialGroup()
                            .addComponent(jLabel4)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(cbcor, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jLabel5)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(cbtipo, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jLabel6)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(txtqtd, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(jPanelcadastroLayout.createSequentialGroup()
                            .addComponent(jLabel1)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(txtcod, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGap(3, 3, 3)
                            .addComponent(jLabel2)
                            .addGap(3, 3, 3)
                            .addComponent(txtdesc)))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(jPanelcadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanelcadastroLayout.createSequentialGroup()
                            .addComponent(jLabel7)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(txtvalor, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jLabel8)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(txtcusto, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(jPanelcadastroLayout.createSequentialGroup()
                            .addComponent(jLabel3)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(txtmarca, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGap(3, 3, 3)
                            .addComponent(lbltamanho)
                            .addGap(3, 3, 3)
                            .addComponent(cbtamanho, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanelcadastroLayout.createSequentialGroup()
                    .addComponent(btnnovo)
                    .addGap(3, 3, 3)
                    .addComponent(btnsalvar)
                    .addGap(3, 3, 3)
                    .addComponent(btnalterar)
                    .addGap(3, 3, 3)
                    .addComponent(btnexcluir)
                    .addGap(3, 3, 3)
                    .addComponent(btncancelar)
                    .addGap(3, 3, 3)
                    .addComponent(btnsair, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(3, 3, 3)
                    .addComponent(txtpesquisa, javax.swing.GroupLayout.PREFERRED_SIZE, 149, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(3, 3, 3)
                    .addComponent(jButton6)))
            .addGap(0, 23, Short.MAX_VALUE))
    );
    jPanelcadastroLayout.setVerticalGroup(
        jPanelcadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelcadastroLayout.createSequentialGroup()
            .addGap(2, 2, 2)
            .addGroup(jPanelcadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabel1)
                .addComponent(txtcod, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel2)
                .addComponent(txtdesc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel3)
                .addComponent(txtmarca, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(cbtamanho, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(lbltamanho))
            .addGap(38, 38, 38)
            .addGroup(jPanelcadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabel4)
                .addComponent(cbcor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel5)
                .addComponent(cbtipo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel6)
                .addComponent(txtqtd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel7)
                .addComponent(txtvalor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel8)
                .addComponent(txtcusto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGap(57, 57, 57)
            .addGroup(jPanelcadastroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(btnnovo)
                .addComponent(btnsalvar)
                .addComponent(btnsair)
                .addComponent(btnexcluir)
                .addComponent(btncancelar)
                .addComponent(btnalterar)
                .addComponent(txtpesquisa, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jButton6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 163, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(321, 321, 321))
    );

    getContentPane().add(jPanelcadastro, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 800, 380));

    pack();
    setLocationRelativeTo(null);
}// </editor-fold>                        

private void formWindowActivated(java.awt.event.WindowEvent evt) {                                     
    // TODO add your handling code here:
}                                    

private void btnsairActionPerformed(java.awt.event.ActionEvent evt) {                                        
   // Chamando a tela de Bem-Vindo.
   Cadastro tela = new Cadastro();
   tela.setVisible(true);
   dispose();
         
}                                       

private void txtpesquisaActionPerformed(java.awt.event.ActionEvent evt) {                                            
    // TODO add your handling code here:
}                                           

private void btnsalvarActionPerformed(java.awt.event.ActionEvent evt) {                                          
    // TODO add your handling code here:
    mod.setCod_Forn(mod.getCod_Forn());
    mod.setDescricao(txtdesc.getText());
    mod.setMarca(txtmarca.getText());
    mod.setTamanho((String)cbtamanho.getSelectedItem());
    mod.setCor((String) cbcor.getSelectedItem());
    mod.setTipo((String) cbtipo.getSelectedItem());
    mod.setQuantidade(Integer.parseInt(txtqtd.getText()));
    mod.setValor(Double.parseDouble(txtvalor.getText()));
    mod.setCusto(Double.parseDouble(txtcusto.getText()));
    
    control.Salvar(mod);
   
}                                         

private void btnnovoActionPerformed(java.awt.event.ActionEvent evt) {                                        
    // TODO add your handling code here:
    btnsalvar.setEnabled(true);
    btncancelar.setEnabled(true);
    txtdesc.setEnabled(true);
    txtmarca.setEnabled(true);
    txtcusto.setEnabled(true);
    txtqtd.setEnabled(true);
    txtvalor.setEnabled(true);
    cbcor.setEnabled(true);
    cbtamanho.setEnabled(true);
    cbtipo.setEnabled(true);
    
}

parte 3
public class modeloproduto {

/**
 * @return the Cod_Prod
 */
public int getCod_Prod() {
    return Cod_Prod;
}

/**
 * @param Cod_Prod the Cod_Prod to set
 */
public void setCod_Prod(int Cod_Prod) {
    this.Cod_Prod = Cod_Prod;
}

/**
 * @return the Cod_Forn
 */
public int getCod_Forn() {
    return Cod_Forn;
}

/**
 * @param Cod_Forn the Cod_Forn to set
 */
public void setCod_Forn(int Cod_Forn) {
    this.Cod_Forn = Cod_Forn;
}

/**
 * @return the Descricao
 */
public String getDescricao() {
    return Descricao;
}

/**
 * @param Descricao the Descricao to set
 */
public void setDescricao(String Descricao) {
    this.Descricao = Descricao;
}

/**
 * @return the Marca
 */
public String getMarca() {
    return Marca;
}

/**
 * @param Marca the Marca to set
 */
public void setMarca(String Marca) {
    this.Marca = Marca;
}

/**
 * @return the Tamanho
 */
public String getTamanho() {
    return Tamanho;
}

/**
 * @param Tamanho the Tamanho to set
 */
public void setTamanho(String Tamanho) {
    this.Tamanho = Tamanho;
}

/**
 * @return the Cor
 */
public String getCor() {
    return Cor;
}

/**
 * @param Cor the Cor to set
 */
public void setCor(String Cor) {
    this.Cor = Cor;
}

/**
 * @return the Tipo
 */
public String getTipo() {
    return Tipo;
}

/**
 * @param Tipo the Tipo to set
 */
public void setTipo(String Tipo) {
    this.Tipo = Tipo;
}

/**
 * @return the Quantidade
 */
public int getQuantidade() {
    return Quantidade;
}

/**
 * @param Quantidade the Quantidade to set
 */
public void setQuantidade(int Quantidade) {
    this.Quantidade = Quantidade;
}

/**
 * @return the Valor
 */
public double getValor() {
    return Valor;
}

/**
 * @param Valor the Valor to set
 */
public void setValor(double Valor) {
    this.Valor = Valor;
}

/**
 * @return the Custo
 */
public double getCusto() {
    return Custo;
}

/**
 * @param Custo the Custo to set
 */
public void setCusto(double Custo) {
    this.Custo = Custo;
}


private int Cod_Prod;
private int Cod_Forn;
private String Descricao;
private String Marca;
private String Tamanho;
private String Cor;
private String Tipo;
private int Quantidade;
private double Valor;
private double Custo;
F

Você debugou o código? Geralmente esse tipo de erro a gente consegue achar a causa debugando :slight_smile:

D

Aqui você está declarando 9 parâmetros na Query e passando 10 ao Prepared Statement

M

Opa. Olhando esse trecho de código que vc colocou, dá pra ver quer existem mais parâmetros sendo passados do que parâmetros requeridos pelo comando sql

PreparedStatement pst = conex.con.prepareStatement(insert into produtos(Cod_Forn,Descricao,Marca,Tamanho,Cor,Tipo,Quantidade,Valor,Custo)values(?,?,?,?,?,?,?,?,?));

pst.setInt(1, mod.getCod_Prod());

pst.setInt(2, mod.getCod_Forn());

pst.setString(3, mod.getDescricao());

pst.setString(4, mod.getMarca());

pst.setString(5, mod.getTamanho());

pst.setString(6, mod.getCor());

pst.setString(7, mod.getTipo());

pst.setInt(8, mod.getQuantidade());

pst.setDouble(9, mod.getValor());

pst.setDouble(10, mod.getCusto());
R

esse Cod_Forn é uma chave estrangeira acho que isso que esta dando errado, agora eu já consertei a quantidade pst.setDouble. mas deu esse erro.

R

Michel já consertei essa parte mas agora esta dado esse erro:

D

A coluna “Tipo” na sua tabela deve estar como “NOT NULL”, e por algum motivo ela não está sendo passada no insert, e então gerando esta exception de constraint.
Você não alterou as ordens dos parâmetros passados ao PreparedStatement ou algo do tipo? como está?

R

Bom dia meu amigo eu não troquei as ordens da uma olhada na minha tabela no banco, realmente esta not null.

D

Então, se realmente está tudo ok no método do Insert no banco então por algum motivo a variável de “Tipo” está vindo nula, e se vier ele não vai deixar persistir no banco mesmo.
É esperado que ela venha nula? Tenta debugar pra ver o que está ocorrendo, onde ela fica nula e porque.

R

Não sei fazer isso. me da um exemplo por favor.

D

O “Tipo” é obtido de um ComboBox né? Na hora de adicionar ele está OK? não está vazio? E como é populado este combobox? E posta como está o código do seu DAO de novo, como está agora o método de salvar no banco.

R

R

e ai meu amigo conseguiu alguma coisa que possa me ajudar?

D

Cara, eu acabei de testar aqui e está funcionando normal.
Posta como está agora a sua classe de persistência no banco, a classe chamada “controleproduto”.

R

R

package Controle;

import Modelo.modeloproduto;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JOptionPane;

/**
*

  • @author Rodinei
    */
    public class controleproduto {

    ConexaoBD conex = new ConexaoBD();
    modeloproduto mod = new modeloproduto();

    public void Salvar(modeloproduto mod) {
    
    conex.conexao();
    
    try {
    
    PreparedStatement pst = conex.con.prepareStatement(insert into produtos(Cod_Forn,Descricao,Marca,Tamanho,Cor,Tipo,Quantidade,Valor,Custo)values(?,?,?,?,?,?,?,?,?));
    
    //pst.setInt(0, mod.getCod_Prod());
         pst.setInt(1, mod.getCod_Forn());
         pst.setString(2, mod.getDescricao());
         pst.setString(3, mod.getMarca());
         pst.setString(4, mod.getTamanho());
         pst.setString(5, mod.getCor());
         pst.setString(6, mod.getTipo());
         pst.setInt(7, mod.getQuantidade());
         pst.setDouble(8, mod.getValor());
         pst.setDouble(9, mod.getCusto());
    
         pst.execute();
         JOptionPane.showMessageDialog(null, "Dados inseridos com sucesso!");
    
     } catch (SQLException ex) {
         JOptionPane.showMessageDialog(null, "Erro ao inserir dados!/ERRO:" + ex);
     }
    
     conex.desconecta();
    

    }
    }

D

Eu testei aqui e está funcionando normal, ele insere o produto sem problemas.
Qual erro e onde está acontecendo?
No seu try…catch não coloca só um JoptionPane pra aparecer a mensagem, printa o stackTrace da execpion no console, coloque:
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, “Erro ao inserir dados!/ERRO:” + ex);
ex.printStackTrace();
}

no seu catch, e poste aqui o que aparece escrito no console do NetBeans.

Criado 25 de novembro de 2018
Ultima resposta 26 de nov. de 2018
Respostas 20
Participantes 5