PreparedStatement nao esta inserindo um dado

7 respostas
guilherme.dio

Boa Tarde…estou com um problema, onde possuo uma interface grafica ao qual escolho insiro alguns dados via texto…porem possui 2 listas(COMBOBOX), 1 possui somente valores inteiros, porem uma possui valor String…esse valor preciso inserir em uma tabela do MYSQL…porém após todo o processo para a inserção, eu checo na tabela, e todos os campos foram preenchidos, menos o campo que recebe o valor da lista String…ja fiz um teste, e ao enviar o parametro para o metodo que faz a inserção no banco, ao inves de mandar (String)this.ComboBox_lista2.getSelectedItem() eu primerio enviei o valor para uma String, e inseri a String no parametro requerido do metodo e mesmo assim ficou NULL qdo chequei no MySQL…entao fiz um debug, e percebi que o valor da lista encontrava-se setado perfeitamente durante todo o processo, inclusive no comando insere.setString(3, tipo), onde tipo é o valor do ComboBox e 3 é a possição odne o valor deve ser inserido na tabela de acordo com esse comando:

“INSERT INTO “+nome_tabela+”(nome,tipo,descricao,imagem,preco,nota) VALUES(?,?,?,?,?,?)”;

entao, alguem tem ideia do que esta ocorrendo? pq eu estou abismado pois mesmo no debug esta correto.

OBS: A estrutura da tabela é essa:
create table pecas_placas_mae(id int auto_increment,nome varchar(50),tipo varchar(5),descricao varchar(500),imagemvarchar(200),preco int(10),nota int(10),
primary key(id));

7 Respostas

lelodois

Estranho…
Geralmente o tipo é uma referência para outra tabela, e é um inteiro.

Mas dá alguma exceção?

Coloca o código ai…

Dica: Coloque seu código entre as tags code

abraços

guilherme.dio
public void inserePeça(String nome_tabela,String nome,String tipo,String descricao,String imagem,int nota,int preco)
    {
        if(nome_tabela.equals("tabela_placas_mae"))
        {
            PreparedStatement insere;
            String comando = "INSERT INTO "+nome_tabela+"(nome,tipo,descricao,imagem,preco,nota)"
                           + "VALUES(?,?,?,?,?,?)";
            Conecta_BD.carregarDriver();
            Connection conn=Conecta_BD.carregarServidor();
            try
            {
                insere=conn.prepareStatement(comando);
                insere.setString(1, nome);
                insere.setString(2, tipo);
                insere.setString(3, descricao);
                insere.setString(4, imagem);
                insere.setInt(5, preco);
                insere.setInt(6, nota);
                insere.execute();
                insere.close();
            }
            catch(Exception e)
            {
                System.out.println(e.getMessage());
            }
        }
        else
        {
            PreparedStatement insere;
            String comando = "INSERT INTO "+nome_tabela+"(nome,descricao,imagem,preco,nota)"
                           + "VALUES(?,?,?,?,?)";
            Conecta_BD.carregarDriver();
            Connection conn=Conecta_BD.carregarServidor();
            try
            {
                insere=conn.prepareStatement(comando);
                insere.setString(1, nome);
                insere.setString(2, descricao);
                insere.setString(3, imagem);
                insere.setInt(4, preco);
                insere.setInt(5, nota);
                insere.execute();
                insere.close();
            }
            catch(Exception e)
            {
                System.out.println(e.getMessage());
            }
        }
    }
lelodois

guilherme.dio:
public void inserePeça(String nome_tabela,String nome,String tipo,String descricao,String imagem,int nota,int preco) { if(nome_tabela.equals("tabela_placas_mae")) { PreparedStatement insere; String comando = "INSERT INTO "+nome_tabela+"(nome,tipo,descricao,imagem,preco,nota)" + "VALUES(?,?,?,?,?,?)"; Conecta_BD.carregarDriver(); Connection conn=Conecta_BD.carregarServidor(); try { insere=conn.prepareStatement(comando); insere.setString(1, nome); insere.setString(2, tipo); insere.setString(3, descricao); insere.setString(4, imagem); insere.setInt(5, preco); insere.setInt(6, nota); insere.execute(); insere.close(); } catch(Exception e) { System.out.println(e.getMessage()); } } else { PreparedStatement insere; String comando = "INSERT INTO "+nome_tabela+"(nome,descricao,imagem,preco,nota)" + "VALUES(?,?,?,?,?)"; Conecta_BD.carregarDriver(); Connection conn=Conecta_BD.carregarServidor(); try { insere=conn.prepareStatement(comando); insere.setString(1, nome); insere.setString(2, descricao); insere.setString(3, imagem); insere.setInt(4, preco); insere.setInt(5, nota); insere.execute(); insere.close(); } catch(Exception e) { System.out.println(e.getMessage()); } } }

Use
insere.executeUpdate();

O

é usado para select.

:wink:

guilherme.dio

Mesmo assim o campo fica NULL

até mesmo fiz o debug denovo, e mostra que o valor da variavel tipo esta setado como “Intel” que é o valor que preciso…

e digo valor ja na altura em que ele insere, ou seja:

insere.setString(3, tipo);

Não entendo oq esta havendo

guilherme.dio

Já resolvi…foi um erro besta, realmente besta…

la no primeiro if, eu estava pondo o nome da tabela errado, o certo era pecas_placas_mae e nao tabela_placas_mae

Elizeu_Santos

cara, de uma olhada na apostila fj21.

guilherme.dio

eu tnho uma DAO…e esses comandos estao dentro da minha DAO…só que precisei usar algumas logicas daquele tipo nela, pq n tinha como eu por em outra classe…

alias eu tbm tenho uma classe “engine” onde ponho tudo que envolve logica, e o resto das classes sao pura interface grafica sem nada.

Criado 21 de abril de 2011
Ultima resposta 21 de abr. de 2011
Respostas 7
Participantes 3