[Resolvido]Atualizar dados

13 respostas
Bruno_Ferreira1

Estou com um problema que não consigo resolver a dias, estou quase desistindo,
mas procurando a solução pra este problema, me decorreram algumas duvidas:

tenho um problema quando tento tento inserir dados em uma tabela de um banco que tem varias tabelas.
da um general error na linha em que o Statement executa a instrução Insert, e eu não sei o porque do problema
estou usando access como banco, procurando resolver, tentei:

1° - Tentei incluir comandos SQL direto no Access, funcionava normal em todas as tabelas, menos naquela que estava dando erro.
Dava um aviso dizendo que aquela tabela ja havia sido aberta por outro usuário, ou programa, mudei as opções avançadas do Access, e as instruções SQL passaram a funcionar diretamente no Access, mas mesmo assim, pelo programa continua dando o mesmo erro

2° - Refiz o banco, refiz todas as tabelas, com os mesmo nomes, depois apenas substitui o arquivo accdb da pasta onde esta guardado o banco.
as novas tabelas estavam vazias, sem registros, mas mesmo assim na parte do programa onde mostro os dados do banco em uma tabela, a tabela esta preenchida!
Ja fechei o netbeans e abri de novo, e continua preenchida com os dados antigos, mesmo eu tendo zerado a tabela
Sera que tem alguma conexão que não foi fechada e os dados continuam la?
Não entendi esta parte
Sera que não é alguma coisa de autocomit?

public void conectar(){
           try{               
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            }
            catch (ClassNotFoundException e){
                JOptionPane.showMessageDialog(null, "Impossível carregar o Driver.");
                System.exit(0);
            }
           
            try{               
                con = DriverManager.getConnection("jdbc:odbc:vendas");
                stm =con.createStatement();
             }

            catch (SQLException sqle){
                JOptionPane.showMessageDialog(null, "Problema ao conectar!");                
            }
        } 


public void guardarDados2(){
        this.conectar();
        //variaveis utilizadas para mandar os valores para o banco
        //variavel nome
         String nome=txt_nome.getText();

         //variavel valor
         String valor=txt_total.getText();

         //pegar a data do sistema
         Date hoje = new Date();
         SimpleDateFormat df;
         df = new SimpleDateFormat("dd/MM/yyyy");
         String data = df.format(hoje);       

         //pegar a hora do sistema
         String hora=this.getHora();       

        //comando que sera passado ao banco na tabela Vendas
        String query="INSERT INTO Vendas (Nome, Valor, Hora, Data) VALUES ('"+nome+"','"+valor+"','"+hora+"','"+data+"')";       
       
       try {            
           stm.executeUpdate(query);   //erro nesta linha        
           JOptionPane.showMessageDialog(null, "Dados guardados com sucesso");    

        }
        catch (SQLException e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null,"erro na segunda instrução sql");
            JOptionPane.showMessageDialog(null,"" + e.getMessage(),"Erro",0);
            JOptionPane.showMessageDialog(null,"" + e.toString(),"Erro",0);
        }
        finally{           
             this.desconectar();
         }
    }

13 Respostas

Bruno_Ferreira1

Deculpem, esqueci de arrumar o nome do tópico, tem como mudar o nome depois de feito?

pedruhenrik

Bruno e se vc usar um banco de dados?

qual o erro?

att,

Bruno_Ferreira1

pedruhenrik:
Bruno e se vc usar um banco de dados?

qual o erro?

att,

o erro é o que eu ja postei neste tópico, mas até agora não achei a solução:

agora eu queria saber porque ele não atualiza os dados, refiz as tabelas, sem nenhum registro, apaguei as tabelas antigas,
mas mesmo assim o programa lista os antigos registros que foram apagados, no Frame que mostra os dados do banco

L

Cara, só um coisa pq vc não importa seu projeto pro eclipse acho bem melhor vc iniciar com outra IDE …por lá achu que não irá vai ter o erro do debug assim podendo ver qual linha esta ocorrendo o erro.

valeu!

outra pergunta, vc quer atualizar seus dados no banco?

pedruhenrik

vc ja experimentou utilizar por exemplo mysql,postgree,sql server,oracle ?

o q aparece no stacktrace ??

att,

Bruno_Ferreira1

lokit"s:
Cara, só um coisa pq vc não importa seu projeto pro eclipse acho bem melhor vc iniciar com outra IDE …por lá achu que não irá vai ter o erro do debug assim podendo ver qual linha esta ocorrendo o erro.

valeu!

outra pergunta, vc quer atualizar seus dados no banco?

então, o projeto ja esta pronto, só falta resolver isso.
Apesar de que eu ia dar uma melhorada na estrutura do código, vou fazer uma classe pra criar a conexão(conectionFactory), ao invés de criar um metodo conectar() em cada Frame.
Depois iria criar uma classe DAO, ja que estou fazendo este projeto, para aprendizagem mesmo, e só depois de pronto, estudando mais um pouco,
descobri algumas má práticas de programação, que eu gostaria de consertar, mesmo o programa ja estando pronto.
tentando encontrar este erro, eu refiz o banco, refiz as tabelas, estão todas vazias.
No Frame que exibe os dados, tem um metodo que busca as informações no banco e exibem em uma tabela, e mesmo assim a tabela que apresenta os dados fica preenchida com os dados que foram apagados
eu queria saber o porque disto

o PrintStackTrace me da erro na linha que comentei la no codigo, na linha que executa o statement

stm.executeUpdate(query);
e gera uma Exception SQL:
General Error

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 sistema_pizzaria.Sistema_Pizzaria.guardarDados2(Sistema_Pizzaria.java:393)

at sistema_pizzaria.Sistema_Pizzaria.btn_imprimirActionPerformed(Sistema_Pizzaria.java:1429)

at sistema_pizzaria.Sistema_Pizzaria.access$3700(Sistema_Pizzaria.java:24)

at sistema_pizzaria.Sistema_Pizzaria$40.actionPerformed(Sistema_Pizzaria.java:1020)

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)
Anime

Oi,

Estranho, aparece os dados que foram apagados… O camigo do banco está correto… :roll:

General Error … É complicado pode ser erro na conexão, valores que não correspondem…

Bruno_Ferreira1

Anime:
Oi,

Estranho, aparece os dados que foram apagados… O camigo do banco está correto… :roll:

General Error … É complicado pode ser erro na conexão, valores que não correspondem…

Obrigado Anime, descobri o erro.
Na verdade o primeiro erro (do outro tópico que postei), era no Access, referentes a algumas opções avançadas de compartilhamento, que nem sei porque aconteceram, pois não tinha mexido em nada nestas opções, talvez tenha mexido sem querer.
Por isso refiz as tabelas em outro arquivo no access, mas mesmo assim dava erro, e a tabela do Frame se preenchia com dados que ja tinham sido apagados.
Como você falou de caminho, me lembrei que eu tenho uma cópia do projeto, em outra pasta no pc.
Tentando lembrar do caminho da conexão, me lembrei que o Driver ODBC estava setado para o caminho da outra pasta do projeto, não na que eu modifiquei, por isso a tabela não era atualizada, e continuava dando erro na inserção de registro.
Desculpem por insistir tanto em um erro besta como esse
No caso do primeiro problema (na execução do Statement) era difícil de achar, por isso recomendo que quem tiver um problema parecido ao primeiro, tente usar os mesmo comandos SQL direto no banco de dados, só assim descobri que nas opções avançadas, não estava permitido a inserção de registros por outros programas
os dois problemas estão resolvidos
e muito obrigado a todos que me ajudaram :smiley:

aos moderadores, podem colocar resolvido no nome do tópico

Anime

Oi,

Imaginei que era isso mesmo, por que tb já fiz isso rsrs… Que bom que resolveu, só um detalhe, quem coloca resolvido no tópico é vc mesmo… :wink:

Bruno_Ferreira1

Anime: como mudar o título do tópico?
Não estou achando :shock:

Anime

Bruno Ferreira:
Anime: como mudar o título do tópico?
Não estou achando :shock:

Oi,

Quando vc entra no tópico do lado direito tem dois botões citar e editar,vai em editar e modifique o título…

Bruno_Ferreira1

Prontinho e obrigado mais uma vez! 8)

Anime

Por nada… :stuck_out_tongue:

Criado 3 de abril de 2011
Ultima resposta 4 de abr. de 2011
Respostas 13
Participantes 4