[Resolvido]Atualizar dados

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?

[code]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();
     }
}[/code]

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

Bruno e se vc usar um banco de dados?

qual o erro?

att,

[quote=pedruhenrik]Bruno e se vc usar um banco de dados?

qual o erro?

att,[/quote]

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

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?

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

o q aparece no stacktrace ??

att,

[quote=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?

[/quote]

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)

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…

[quote=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…

[/quote]

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

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:

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

[quote=Bruno Ferreira]Anime: como mudar o título do tópico?
Não estou achando :shock: [/quote]

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…

Prontinho e obrigado mais uma vez! 8)

Por nada… :stuck_out_tongue: