Problemas para gravar dados no banco de dados access! [DESISTO]

18 respostas
T

Ola pessual estou desenvolvendo uma aplicação e criei um banco de dados acess, a questão é a seguinta, consigo chamar os dados que estão gravados no banco para aparecerem na minha aplicação.
Porem quero inserir dados pelo java e não acontece ação nenhuma, nem emite mensagem de erro. vou colocar o codigo abaixo.

private void buton_salvarActionPerformed(java.awt.event.ActionEvent evt) {                                             
    
        try
        {//esses são os campos do meu banco
            String sqlinsert = "insert into Cadastro (Tipo,ISBN,ISSN,cod_Multimidia,num_Ativo,Titulo,Auor,Edição,Assunto,Publicação,Editora,Quantidade,Acervo Restrito) values ('"+
            text_ISBN.getText()+"','"+//aqui são os campos para serem preenchidos no formulario
            text_ISSN.getText()+"','"+
            text_codMultimidia.getText()+"','"+
            text_numAtivo.getText()+"','"+
            text_Autor.getText()+"','"+
            text_Titulo.getText()+"','"+
            text_edicao.getText()+"','"+
            Jcombo_Assunto.getSelectedItem()+"')"+
            text_publicacao.getText()+"','"+
            text_editora.getText()+"','"+
            text_quantidade.getText()+"','"+
            combo_Tipo.getSelectedItem()+ "')"+
            rbuton_sim.getText()+"','";
            cad_acervo.statement.executeUpdate(sqlinsert);
            JOptionPane.showMessageDialog(null,"Gravação realizada com Sucesso");
            cad_acervo.executeSQL("select * from Cadastro");
            cad_acervo.resultset.first();
            mostrar_dados();
        }
            catch(SQLException erro)
            {
                
                
    }
    }

18 Respostas

pmlm

1 - Esse INSERT está muito confuso e há erros com as ’ - Deves usar PreparedStatement

2 - Se fazes o catch da Exception e não pões nada no seu tratamento, os erros não irão aparecer em lado nenhum

T

a) Evite usar campos com nomes com acentos ou espaços. Nem todos os bancos aceitam isso.

b) O nome do campo é “auor” ou “autor”? “Auor” parece um personagem do Harry Potter (que é um “auror”, por falar nisso).

c) Para nomes com acentos ou espaços você precisa pôr colchetes, se não me engano.

insert into Cadastro (Tipo,ISBN,ISSN,cod_Multimidia,num_Ativo,Titulo,Auor,[Edição],Assunto,[Publicação],Editora,Quantidade,[Acervo Restrito])

T

realmente esqueci do catch, então na verdade estou seguindo exemplo de um livro para salvar os dados no banco, não entendi dreito esse negocio ("’,’") tb, mas no caso ele diz que cada ‘,’ sera um dos campos que irei preencher, ou seja vou deixar alocado um espaço para receber o valor, mas nao entendi se é isso mesmo.

renamed

a virgula determina outro valor que você quer que seja inserido… os plics (aspas simples) servem para você passar uma palavra.

INSERT INTO PESSOAS (Id, nome, idade) values (1, ‘Fulano’, 24)

ok?

T

pmlm:
1 - Esse INSERT está muito confuso e há erros com as ’ - Deves usar PreparedStatement

2 - Se fazes o catch da Exception e não pões nada no seu tratamento, os erros não irão aparecer em lado nenhum

coloquei o catch e deu o seguinte erro:

java.SQLException: [Microsoft[Driver ODBC Microsoft Access] Erro de Sintaxe na Instrução  INSERT INTO.

Coloquei as [] tb mas ainda nao consegui, vc citou PreparedStatement, teria algum exemplo desse comondo? não sei como implementa-lo

T

Fiz o que me passaram mas ainda da o mesmo erro, o que pode ser agora:

private void buton_salvarActionPerformed(java.awt.event.ActionEvent evt) {                                             
    
        try
        {
            String sqlinsert = "INSERT INTO Cadastro (Tipo,ISBN,ISSN,cod_Multimidia,num_Ativo,Titulo,Autor,[Edição],Assunto,[Publicação],Editora,Quantidade,Acervo Restrito) values ('"+
            text_ISBN.getText()+"''"+
            text_ISSN.getText()+"''"+
            text_codMultimidia.getText()+"''"+
            text_numAtivo.getText()+"''"+
            text_Autor.getText()+"''"+
            text_Titulo.getText()+"''"+
            text_edicao.getText()+"''"+
            Jcombo_Assunto.getSelectedItem()+"')"+
            text_publicacao.getText()+"''"+
            text_editora.getText()+"''"+
            text_quantidade.getText()+"''"+
            combo_Tipo.getSelectedItem()+ "')"+
            rbuton_sim.getText()+"''";
            cad_acervo.statement.executeUpdate(sqlinsert);
            JOptionPane.showMessageDialog(null,"Gravação realizada com Sucesso");
            cad_acervo.executeSQL("select * from Cadastro");
            cad_acervo.resultset.first();
            mostrar_dados();
        }
            catch(SQLException erro)
            {
                
                JOptionPane.showMessageDialog(null,"Problemas com:  "+erro);
    }
    }
pmlm

faz um print da String sqlinsert antes de cad_acervo.statement.executeUpdate(sqlinsert); e vê como está o SQL

T

a) [Acesso Restrito], não Acesso Restrito.
b) Eu ainda recomendo que você mude os nomes dos campos para tirar os acentos e espaços. Fica feio mas dá bem menos problemas.

T

Por enquanto a acesso não esta restrito, vou implementar depois isso.

troquei o nome dos campos.

private void buton_salvarActionPerformed(java.awt.event.ActionEvent evt) {                                             
    
        try
        {
            String sqlinsert = "insert into Cadastro (Tipo,ISBN,ISSN,cod_Multimidia,num_Ativo,Titulo,Autor,Edicao,Assunto,Publicacao,Editora,Quantidade,Acervo Restrito) values ('"+
            text_ISBN.getText()+"''"+
            text_ISSN.getText()+"''"+
            text_codMultimidia.getText()+"''"+
            text_numAtivo.getText()+"''"+
            text_Autor.getText()+"''"+
            text_Titulo.getText()+"''"+
            text_edicao.getText()+"''"+
            Jcombo_Assunto.getSelectedItem()+"')"+
            text_publicacao.getText()+"''"+
            text_editora.getText()+"''"+
            text_quantidade.getText()+"''"+
            combo_Tipo.getSelectedItem()+ "')"+
            rbuton_sim.getText()+"''";
            cad_acervo.statement.executeUpdate(sqlinsert);
            JOptionPane.showMessageDialog(null,"Gravação realizada com Sucesso");
            cad_acervo.executeSQL("select * from Cadastro");
            cad_acervo.resultset.first();
            mostrar_dados();
        }
            catch(SQLException erro)
            {
                
                JOptionPane.showMessageDialog(null,"Problemas com:  "+erro);
    }

Mudei o nome dos campos mas ainda nada, estou com duvida , deixa ver se consigo explicar.

Devini os campos que irão ser alimentados no banco né: como ISBN, ISSN e assim por diante ai depois ele deixou espaço reservado para receber os valores:

com os gets e no caso cada ()+"’ ‘"+
get()+"’ '"; e assim por diante, ficara alocado um desses valores?

T

Tire esse campo “Acesso Restrito” de sua query, enquanto ele estiver aí com esse espaço no nome você vai ter problemas.
Mais cuidado na hora de fazer as coisas - mexer com programação requer um pouco de sangue-frio e atenção, não dá para fazer as coisas na base da porrada. É igual a manobrar um carro em uma vaga apertada; se bobear vai acabar riscando o carro ou quebrando o espelho retrovisor).

pmlm
  • A ordem dos valores não está de acordo com as colunas identificadas.
    Por exemplo, as primeiras três colunas são tipo, ISBN e ISSN mas os valores introduzidos nas três primeiras posições estão text_ISBN, text_ISSN e text_codMultimidia.

  • Não há virgulas entre os valores introduzidos.

  • Há uns parênteses que aparecem do nada e não há parêntese no final dos valores

T

No caso quando vou chamar um campo que esteja definido como numero eu usu ’ ’ ? ou não?

fiz de novo reparei nisso tb das ordens e corrigi porém ainda da erro:

private void buton_salvarActionPerformed(java.awt.event.ActionEvent evt) {                                             
    
        try
        {
            String sqlinsert = "insert into Cadastro (Tipo,ISBN,ISSN,cod_Multimidia,num_Ativo," +
            "Titulo,Autor,Edicao,Assunto,Publicacao,Editora,Quantidade,Acervo Restrito) values ('"+
            combo_Tipo.getSelectedItem()+ "','"+
            text_ISBN.getText()+"','"+
            text_ISSN.getText()+"','"+
            text_codMultimidia.getText()+"','"+
            text_numAtivo.getText()+"','"+
            text_Titulo.getText()+"','"+
            text_Autor.getText()+"','"+
            text_edicao.getText()+"','"+
            Jcombo_Assunto.getSelectedItem()+"','"+
            text_publicacao.getText()+"','"+
            text_editora.getText()+"','"+
            text_quantidade.getText()+"','"+
            rbuton_sim.getText()+"',)";
            cad_acervo.statement.executeUpdate(sqlinsert);
            JOptionPane.showMessageDialog(null,"Gravação realizada com Sucesso");
            cad_acervo.executeSQL("select * from Cadastro");
            cad_acervo.resultset.first();
            mostrar_dados();
        }
            catch(SQLException erro)
            {
                
                JOptionPane.showMessageDialog(null,"Problemas com:  "+erro);
    }
    }
pmlm

O número não precisa de ‘’

Mas se usares PreparedStatement não precisas de te preocupar com isso.

String sqlinsert = "insert into Cadastro (Tipo,ISBN,ISSN,cod_Multimidia,num_Ativo," +  
             "Titulo,Autor,Edicao,Assunto,Publicacao,Editora,Quantidade,[Acervo Restrito]) "+
             "values (?,?,?,?,?,?,?,?,?,?,?,?,?)";
pmlm

rbuton_sim.getText()+"',)"; Este não leva virgula, é o último.

T

Desisto, ja fiz de tudo:

private void buton_salvarActionPerformed(java.awt.event.ActionEvent evt) {                                             
    
        try
        {
            String sqlinsert = "INSERT INTO Cadastro (Tipo,ISBN,ISSN,cod_Multimidia,num_Ativo," +
            "Titulo,Autor,Edicao,Assunto,Publicacao,Editora,Quantidade,Acervo_Restrito) values ('"+
            combo_Tipo.getSelectedItem()+"',"+
            text_ISBN.getText()+","+
            text_ISSN.getText()+","+
            text_codMultimidia.getText()+","+
            text_numAtivo.getText()+"'"+
            text_Titulo.getText()+"''"+
            text_Autor.getText()+"'"+
            text_edicao.getText()+"'"+
            Jcombo_Assunto.getSelectedItem()+"''"+
            text_publicacao.getText()+"''"+
            text_editora.getText()+"'"+
            text_quantidade.getText()+"''"+
            rbuton_sim.getText()+"')";
            cad_acervo.statement.executeUpdate(sqlinsert);
            JOptionPane.showMessageDialog(null,"Gravação realizada com Sucesso");
            cad_acervo.executeSQL("select * from Cadastro");
            cad_acervo.resultset.first();
            mostrar_dados();
        }
            catch(SQLException erro)
            {
                
                JOptionPane.showMessageDialog(null,"Problemas com:  "+erro);
    }
    }
pmlm

Ainda faltam ai muitas virgulas…

String sqlinsert = "INSERT INTO Cadastro (Tipo,ISBN,ISSN,cod_Multimidia,num_Ativo," + "Titulo,Autor,Edicao,Assunto,Publicacao,Editora,Quantidade,Acervo_Restrito) values ('"+ combo_Tipo.getSelectedItem()+"', '"+ text_ISBN.getText()+"','"+ text_ISSN.getText()+"','"+ text_codMultimidia.getText()+"','"+ text_numAtivo.getText()+"','"+ text_Titulo.getText()+"','"+ text_Autor.getText()+"','"+ text_edicao.getText()+"','"+ Jcombo_Assunto.getSelectedItem()+"','"+ text_publicacao.getText()+"','"+ text_editora.getText()+"','"+ text_quantidade.getText()+"','"+ rbuton_sim.getText()+"')";

T
pmlm:
Ainda faltam ai muitas virgulas....
String sqlinsert = "INSERT INTO Cadastro (Tipo,ISBN,ISSN,cod_Multimidia,num_Ativo," +  
           "Titulo,Autor,Edicao,Assunto,Publicacao,Editora,Quantidade,Acervo_Restrito) values ('"+  
           combo_Tipo.getSelectedItem()+"', '"+  
           text_ISBN.getText()+"','"+  
           text_ISSN.getText()+"','"+  
           text_codMultimidia.getText()+"','"+  
           text_numAtivo.getText()+"','"+  
           text_Titulo.getText()+"','"+  
           text_Autor.getText()+"','"+  
           text_edicao.getText()+"','"+  
           Jcombo_Assunto.getSelectedItem()+"','"+  
           text_publicacao.getText()+"','"+  
           text_editora.getText()+"','"+  
           text_quantidade.getText()+"','"+  
           rbuton_sim.getText()+"')";

Fiz igualzinho o seu e continua com erro:

private void buton_salvarActionPerformed(java.awt.event.ActionEvent evt) {                                             
    
        try
        {
           String sqlinsert = "INSERT INTO Cadastro (Tipo,ISBN,ISSN,cod_Multimidia,num_Ativo," +     
        "Titulo,Autor,Edicao,Assunto,Publicacao,Editora,Quantidade,Acervo_Restrito) values ('"+     
        combo_Tipo.getSelectedItem()+"', '"+     
        text_ISBN.getText()+"','"+     
        text_ISSN.getText()+"','"+     
        text_codMultimidia.getText()+"','"+     
        text_numAtivo.getText()+"','"+     
        text_Titulo.getText()+"','"+     
        text_Autor.getText()+"','"+     
        text_edicao.getText()+"','"+     
        Jcombo_Assunto.getSelectedItem()+"','"+     
        text_publicacao.getText()+"','"+     
        text_editora.getText()+"','"+     
        text_quantidade.getText()+"','"+     
        rbuton_sim.getText()+"')";    

            cad_acervo.statement.executeUpdate(sqlinsert);
            JOptionPane.showMessageDialog(null,"Gravação realizada com Sucesso");
            cad_acervo.executeSQL("select * from Cadastro");
            cad_acervo.resultset.first();
            mostrar_dados();
        }
            catch(SQLException erro)
            {
                
                JOptionPane.showMessageDialog(null,"Problemas com:  "+erro);
    }
    }

ISBN,ISSN,numAtivo,codMultimidia,quantidade são numeros em minha tabela, os demais são textos

Roger75

O que ajudaria é debugar a classe com o Eclipse ou outra IDE de sua preferência, e então pegar o conteúdo da variável sqlinsert. Depois, testar no banco se o comando está correto.

Criado 3 de novembro de 2009
Ultima resposta 3 de nov. de 2009
Respostas 18
Participantes 5