[resolvido]Parâmetros insuficientes. Eram esperados 2

4 respostas
Bruno_Ferreira1

Estou fazendo uma aplicação simples, com uma tabela que carrega os dados de livros de um banco de dados em Access
Fiz uma classe LivroDAO com um método para excluir:

public void excluirLivro(int codigo, JPanel j){
            String sql="Delete FROM Livro WHERE Codigo=?";

            try{
                con = new Conexao().criaConexao();
                pstm =con.prepareStatement(sql);
                pstm.setInt(1,codigo);

                pstm.executeUpdate();

             JOptionPane.showMessageDialog(j, "Livro Excluído");
             this.desconectar();

             }
            catch (SQLException e){
                JOptionPane.showMessageDialog(null, "Problema ao conectar na classe LivroDAO! "+e.getMessage());
            }
       }

e ele me da este erro, mandei o painel de parametro tambem só para o JOptionPane ficar no centro do painel, pois o frame é pequeno
e tenho outros métodos da classe DAO que funcionam, só este não funciona, a unica diferença é que este é um campo do tipo int, os outros são String

aqui a chamada deste método:
LivroDAO li=new LivroDAO();
            Integer codigo=(Integer) tabela_livro.getValueAt(tabela_livro.getSelectedRow(), 0);
            int cod=codigo.intValue();
            // fiz este JOptionPane só para testar, e ele me mostra o numero corretamente
            JOptionPane.showMessageDialog(rootPane, ""+cod);
            li.excluirLivro(cod, jPanel1);

Só neste método me da este erro, os outros funcionam normalmente, só que os campos que passo de parâmetros nos outros são do tipo String
Alguem pode me ajudar?

4 Respostas

getAdicted

Posta a exception, brother.

[]'s

Bruno_Ferreira1

a exception é essa.

aqui o PrintStackTrace

java.sql.SQLException: [Microsoft][Driver ODBC Microsoft Access] Parâmetros insuficientes. Eram esperados 2.

at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)

at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)

at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3149)

at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:216)

at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(JdbcOdbcPreparedStatement.java:138)

at sistema_biblioteca.LivroDAO.excluirLivro(LivroDAO.java:91)

at sistema_biblioteca.Form_Livro.btn_excluirActionPerformed(Form_Livro.java:345)

at sistema_biblioteca.Form_Livro.access$300(Form_Livro.java:27)

at sistema_biblioteca.Form_Livro$4.actionPerformed(Form_Livro.java:191)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6216)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)

at java.awt.Component.processEvent(Component.java:5981)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4583)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4413)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)

at java.awt.Container.dispatchEventImpl(Container.java:2085)

at java.awt.Window.dispatchEventImpl(Window.java:2475)

at java.awt.Component.dispatchEvent(Component.java:4413)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Bruno_Ferreira1

Estranho, tentei inserir o comando SQL direto no Access:
Delete from Livro where codigo=3

mas quando executo, ele abre uma janelinha escrito:
“Inserir valor do Parâmetro”
o nome do campo código
e um campo pra poder digitar

Não estou entendendo isso, talvez por isso ele dava o erro
mesmo mandando o codigo 3 para excluir a linha, ele pede esse parâmetro, ai se eu digitar 3 nesta caixinha, ele apaga todas as linhas
se eu digitar qualquer outro número, ele não apaga nada :shock:

alguem sabe o que é isso?
Me parece que o problema esta ai, e não na aplicação

Bruno_Ferreira1

O Campo Codigo estava com acento na tabela,
ja mudei e funcionou

Criado 12 de junho de 2011
Ultima resposta 12 de jun. de 2011
Respostas 4
Participantes 2