Eu estou fazendo um programa de diárias, os dados serão salvos no access, porém não estou

eu estou fazendo um programa de diárias, os dados serão salvos no access, a conexão esta feita só que ele não esta salvando os dados no banco onde deveria ser, plhe essa parte do código que esta certa mas não esta inserindo no banco.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { if(txtNome.getText().trim().length() == 0){ JOptionPane.showMessageDialog(null,"Preencha o Campo Nome","ATENÇÃO",JOptionPane.WARNING_MESSAGE); }else{ ClassCadFuncao funcao = new ClassCadFuncao(); funcao.setNome(txtNome.getText()); funcao.incluiFuncao(); } this.dispose(); }

Alguem pode me ajudar??? eu utilizo o NetBeans 7.0.1

Eu preciso disso para ontem, pois tenho que apresentar esse programa pronto ate dia 30/01/12.

Aguardo a Respostas…

Carinha, esse código que você está mostrando aqui Não é o código que grava no banco. Provavelmente seria necessário ver o incluiFuncao().

De qualquer forma, se você está usando access, deve estar usando um driver ponte entre JDBC x ODBC. Então existem várias coisas que podem dar errado. Por exemplo, a configuração da conexão ODBC no sistema operacional pode estar errada.

[quote=Oziel Morais]eu estou fazendo um programa de diárias, os dados serão salvos no access, a conexão esta feita só que ele não esta salvando os dados no banco onde deveria ser, plhe essa parte do código que esta certa mas não esta inserindo no banco.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { if(txtNome.getText().trim().length() == 0){ JOptionPane.showMessageDialog(null,"Preencha o Campo Nome","ATENÇÃO",JOptionPane.WARNING_MESSAGE); }else{ ClassCadFuncao funcao = new ClassCadFuncao(); funcao.setNome(txtNome.getText()); funcao.incluiFuncao(); } this.dispose(); }

Alguem pode me ajudar??? eu utilizo o NetBeans 7.0.1

Eu preciso disso para ontem, pois tenho que apresentar esse programa pronto ate dia 30/01/12.

Aguardo a Respostas…[/quote]

Não, Não . A configuração esta certa da uma mensagem de erro dizendo que TIPO DE DADOS INCOMPATÍVEL NA EXPRESSÃO DE CRITÉRIO. Será que vc’s podem me ajudar???

A respeito que vc mandou eu olhar o INCLUIFUNCAO(); esse esta implementado aqui nessa classe do mesmo programa, a só uma olhada.

[code]void incluiFuncao(){
conexao.conecta();
try{
stmt = conexao.con.createStatement();
stmt.executeUpdate(“insert into TabFuncao( nome, dataCadastro) values (’” + getNome() +"’,’"+ data.PegaDataAtual() +"’)");
stmt.close();
conexao.con.close();
audita.setTxt("Função " + getNome() + “Cadastrada”);
audita.incluiAuditoria();
}catch(SQLException e){
JOptionPane.showMessageDialog(null,“Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n”+ e,“ATENÇÃO”,JOptionPane.WARNING_MESSAGE);
}

}[/code]

Carinha, você não está usando um jeito legal de usar um statement. Esse negócio que você está fazendo

       stmt = conexao.con.createStatement();  
           stmt.executeUpdate("insert into TabFuncao( nome, dataCadastro) values ('" + getNome() +"','"+ data.PegaDataAtual() +"')");             

Pode dar um monte de melecas:

  1. O sua operação SQL não vai ficar no cache do banco de dados, fazendo com que sua consulta seja extremamente ineficiente.

  2. Você vai ter que fazer códigos específicos para cada banco de dados em que você for trabalhar, para converter a data em um formato que o banco de dados aceite.

O certo é fazer isto:

stmt = conexao.con.prepareStatement("insert into tabFuncao (nome, dataCadastro) values ( ?, ? )");
stmt.setString(1,getNome());
stmt.setDate(2, data.PegaDataAtual());
stmt.executeUpdate();

Por que tem que fazer assim? Porque assim:

  1. o java vai passar para o driver JDBC a tarefa de escrever os campos em um formato aceitável para o banco de dados.
  2. o banco de dados vai ter a “dica” de que esta operação possui parâmetros variáveis e pode armazenar a estratégia de acesso a banco em um cache (isso vale mais para “SELECTS” que para updates.
  3. Montar sql “na unha” abre o caminho para diversas falhas de segurança, porque um cara malicioso pode escrever alguma operação SQL para achar usuários e senhas, por exemplo, ou fazer outras coisas mais assustadoras, que não tou lembrando agora.

Uma vez recebi uma problema de que uma consulta estava levando 24 segundos para ser feita no banco de dados. Por que? Porque estavam usando “createStatement()” e montando o SQL na unha como você está fazendo.
Mudei a consulta para uma forma parametrizada com o PrepareStatement e essa consulta passou a ser feita em 0,22 segundos.

P.S: se o seu data.PegaDataAtual() retorna um java.util.Date, o setDate precisa de um java.sql.Date; Dá pra fazer uma conversão deste tipo com uma operação como esta
java.sql.Date dataConvertida = new java.sql.Date(dataoriginal.getTime());

UMA BOA DICA:

abandone o access e use sqlite.

[quote=mauricioadl]UMA BOA DICA:

abandone o access e use sqlite.[/quote]

Outra dica. Seja objetivo em seu tópico. Eu não fazia idéia do que tu precisava (precisa) e nem sequer li.
Se for mais objetivo, fica mais fácil de sabermos sua necessidade e o ajudarmos.

Abraços.

Muito Obrigado pelas Dicas mas esta dando erro nesse código que vc’s Citaram logo acima esse método " Set " não esta dando certo. Olhe aqui…

stmt = conexao.con.prepareStatement("insert into tabFuncao (nome, dataCadastro) values ( ?, ? )"); stmt.setString(1,getNome()); stmt.setDate(2, data.PegaDataAtual()); stmt.executeUpdate(" ");

Tem alguma outra Forma de declarar esse código???

[quote=Oziel Morais]Muito Obrigado pelas Dicas mas esta dando erro nesse código que vc’s Citaram logo acima esse método " Set " não esta dando certo. Olhe aqui…

stmt = conexao.con.prepareStatement("insert into tabFuncao (nome, dataCadastro) values ( ?, ? )"); stmt.setString(1,getNome()); stmt.setDate(2, data.PegaDataAtual()); stmt.executeUpdate(" ");

Tem alguma outra Forma de declarar esse código???

[/quote]

Sempre que postar um código informando que há erro nele, diga qual erro e poste o stacktrace (erro) dele, senão, ficamos sem saber o que está havendo.
Para o seu caso colega, o método executeUpdate não recebe parâmetro, portanto, retire as aspas duplas dele.

Abraços.

Como é que sr executa esse comando stacktrace no código ??? Por favor , se puderem postem um exemplos de como se faz ???