General Error - De onde?

21 respostas
Lei

Pessoas,
boa noite!

Após um período “afastada” do fórum, estou de volta, pra depois sumir de novo até a faculdade acabar (aleluia!).
Peço ajuda: o seguinte código executado no NetBeans/banco Access,roda, mas não insere o dado no banco…aparece na hora que clico em “salvar”: Erro General Error. O que há de errado?? Estava funcionando há 5 minutos atrás, mas sei lá porque, parou.

Agradecida!!!

int E,A,N,V,C;
        Conexao connex = new Conexao();
        
        try{
            connex.conectar();
            Statement stmc=connex.conne.createStatement(); 
            
            String Titulo=jTextField3.getText();
            String Autor1=(String) jComboBox1.getSelectedItem();
            String Autor2=(String) jComboBox2.getSelectedItem();
            String Autor3=(String) jComboBox3.getSelectedItem();
            String Localizacao=(String) jComboBox4.getSelectedItem();
            String Editora=(String) jComboBox6.getSelectedItem();
            E=Integer.parseInt(jTextField4.getText());
            A=Integer.parseInt(jTextField5.getText());
            N=Integer.parseInt(jTextField6.getText());
            V=Integer.parseInt(jTextField7.getText());
            C=Integer.parseInt(jTextField9.getText());
            String DataPublicacao=jTextField1.getText();
            ButtonModel Tipo=buttonGroup1.getSelection();
            
            stmc.executeUpdate("insert into Obra(Titulo,Autor1,Autor2,Autor3,Localizacao,Editora,Edicao,Ano,Numero,Volume,Codigo,DataPublicacao,Tipo) values ('"+Titulo+"','"+Autor1+"','"+Autor2+"','"+Autor3+"','"+Localizacao+"','"+Editora+"','"+E+"','"+A+"','"+N+"','"+V+"','"+C+"','"+DataPublicacao+"','"+Tipo+"')");
            JOptionPane.showMessageDialog(this, "Dados inseridos com sucesso!");
            connex.desconectar();
            
            jTextField3.setText("");
            jComboBox1.setSelectedItem("<Nenhum>");
            jComboBox2.setSelectedItem("<Nenhum>");
            jComboBox3.setSelectedItem("<Nenhum>");
            jComboBox4.setSelectedItem("Azul");
            jComboBox6.setToolTipText(Editora);
            jTextField4.setText("");
            jTextField5.setText("");
            jTextField6.setText("");
            jTextField7.setText("");
            jTextField9.setText("");
            jTextField1.setText("");
            buttonGroup1.setSelected(Tipo, rootPaneCheckingEnabled);
            
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(this, "Erro "+e.getMessage());
        } 
    }

21 Respostas

rsakurai

coloca o stack trace do erro.

rsakurai

As colunas Ano, Numero, Volume, Codigo, DataPublicacao e Tipo são do tipo numerico no banco de dados?

Se vc preferir, pode utilizar o metodo execute no lugar do método executeUpdate.

Lei

Stack trace??? Estou começando em java…traduza “stack trace”…
Sim, são do tipo numérico. Mas rafa, estava funcionando…mexi em alguma coisa e parou. Estava tudo legal sabe…

rsakurai

Coloque o seguinte codigo na linha 40:

catch (SQLException e) { 
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Erro "+e.getMessage());  
}

E quando vc executar novamente este programa, vc vai ver varias linhas de erros, copie essas linhas e post aqui no guj.

Lei

Rafa,
seguem os erros (e obrigado pela ajuda!)

java.sql.SQLException: General error
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6986)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
        at ssgb.Obras.jButton2ActionPerformed(Obras.java:437)
        at ssgb.Obras.access$400(Obras.java:17)
        at ssgb.Obras$5.actionPerformed(Obras.java:352)
        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:6041)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5806)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4413)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2440)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
rsakurai

Essas linhas de erro que vc colocou é o stack trace.

Eu acho que o erro pode ser quando vc coloca a variavel “Tipo”, pois ela é um ButtonModel, acho que deveria ser um valor caracter ou String.

outra coisa, quando vc cria o insert, passando valores númericos, vc não precisa colocar aspas simples nos campos numericos:
,"+E+","+A+","+N+","+V+","+C+",

Lei

Como estou fazendo no NetBeans, ele só roda se eu colocar ButtonModel.
Eu ponho String, aí aparece a tal “lâmpada mágica” sugerindo alterar de String para ButtonModel.

Tirei as aspas simples e nada mudou…

rsakurai

No banco de dados como vc representa este campo Tipo?

Lei

Como texto.
No Access.

Lei

Rafa…
o problema não é com o Tipo…
Experimentei tirá-lo do código e continua dando erro.

rsakurai

Se vc deixar apenas a variavel Tipo no insert, ele vai salvar algo assim no seu banco de dados:

javax.swing.JToggleButton$ToggleButtonModel@15dfd77

pelo que eu entendi vc esta querendo pegar o valor de um foi selecionado dentro de um GroupButton, vc está usando JRadioButton dentro desse GroupButton?

Lei

Justamente Juvenal!
Quero pegar o valor de um button, de dentro da group.

rsakurai

Testa com esse insert

stmc.executeUpdate("insert into Obra(Titulo,Autor1,Autor2,Autor3,Localizacao,Editora,Edicao,Ano,Numero,Volume,Codigo,DataPublicacao,Tipo) values ('"+Titulo+"','"+Autor1+"','"+Autor2+"','"+Autor3+"','"+Localizacao+"','"+Editora+"','"+A+"','"+N+"','"+V+"','"+C+"','"+DataPublicacao+"','abc')");
Lei

Resultado: “Erro:[Microsoft][Driver ODBC para Microsoft Access] Número de valores da consulta e campos de destino não coincidem”

rsakurai

testa esse

stmc.executeUpdate(“insert into Obra(Titulo,Autor1,Autor2,Autor3,Localizacao,Editora,Edicao,Ano,Numero,Volume,Codigo,DataPublicacao,Tipo) values (‘titulo’,‘Autor1’,‘Autor2’,‘Autor3’,‘Localizacao’,‘Editora’,1,2008,2,3,123,‘28/05/2008’,‘Tipo’)”);

rafaelglauber
String DataPublicacao=jTextField1.getText();

debug o seu programa e diga como fica essa sua “DataPublicao”, qual o formato dessa suposta data?

Lei
java.sql.SQLException: General error
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6986)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
        at ssgb.Obras.jButton2ActionPerformed(Obras.java:437)
        at ssgb.Obras.access$400(Obras.java:17)
        at ssgb.Obras$5.actionPerformed(Obras.java:352)
        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:6041)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5806)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4413)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2440)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Lei

Glauber,
está como formato texto, exatamente pq tem gente que vai digitar “21/12/2000” ou “21/12/00”…

rsakurai

troca o método executeUpdate para execute.

e verifica se os campos da tabela estão certinhos.

Lei

Rafa,
uma coisa curiosa: ele executou e inseriu na tabela. Só na PRIMEIRA VEZ.
Executei mais 2 vezes e deu o mesmo General Error.

Lei

Devo continuar tentando. Amanhã. Por hoje meu gás já acabou. Muitíssimo obrigado pelo tempo a mim dispensado, Rafa!

Criado 28 de maio de 2008
Ultima resposta 28 de mai. de 2008
Respostas 21
Participantes 3