Erro de inserção de dados no banco de dados MYSQL

11 respostas
Oziel_Morais

Esse código é para cadastrar uma função de um funcionario numa tabela do mysql, o código esta certo mas ta dando um certo erro, [color=red]com.mysql.jdbc.exceptions.jdbc4.MYSQLSyntaxErrorException: Unknown column ‘data’ in ‘field list’[/color] O que pode estar dando errado ja li esse erro tenei de varias formas contorna-los e não deu certo. Aguardo respostas…

import java.sql.*;
import java.text.DateFormat;
import java.util.*;
import javax.swing.JOptionPane;
public class ClassCadFuncao {
    
    /** Creates a new instance of ClassCadFuncao */
    public ClassCadFuncao() {    }
    
    private String nome;
    
    public void setNome(String _nome){
        this.nome = _nome;
    }
    
    public String getNome(){
        return this.nome;
    }
    ClassDatas data = new ClassDatas();
    ClassConecta conexao = new ClassConecta();
    ClassAuditoria audita = new ClassAuditoria();
    Statement stmt = null;
    
      void incluiFuncao(){
        conexao.conecta();
        try{
           stmt = conexao.con.createStatement();
          String ComandoSql = "insert into TabFuncao( nome, data ) values ('" + getNome() +"','"+ data.leData() +"')";
          stmt.executeUpdate(ComandoSql);
           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);
        }
        
        
    

    
    
      }
}





 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();
        JOptionPane.showMessageDialog(null,"Função Cadastrada com Sucesso !");
         }
        this.dispose();
    }

11 Respostas

Fexx

Problemas na sua query, provavelmente o mal uso de aspas simples no lugar correto .

Use um PreparedStatement ao invés de Statement, seu codigo fica mais legível e mais fácil de dá manutenção, ele trabalha com corigas(interrogações), pesquise sobre o assunto.

veja um exemploi:

String sql = "insert into TabFuncao( nome, data ) values (?, ?)";
		PreparedStatement ptmt = conn.prepareStatement(sql);

Boa sorte.

PuRgAuM

Provavelmente o problema está no campo “data” da tabela TabFuncao. Essa coluna existe?? Eu trabalho pouco com MySQL, mas data não é uma palavra reservada nesse SGDB? Caso seja você vai ter que trocar o nome desta coluna.

Vlw

Oziel_Morais

Mudei, olha só como ficou mas ainda continua aparecendo o mesmo erro, o que posso fazer????

void incluiFuncao(){
        conexao.conecta();
        try{
            PreparedStatement stmt = conexao.con.prepareStatement("insert into TabFuncao( nome, dataCadastro ) values (?,?,?)");  
  
    // preenche os valores  
    stmt.setString(1,getNome ());  
    stmt.setString(2,data.leData());   
     // executa  
    stmt.execute();  
    stmt.close();  
  
    System.out.println("Função Cadastrada"); 
           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);
        }
Fexx

Vc está utilizando 3 interrogações no PreparedStatement, veja esse exemplo e tente implementar em seu codigo:

public void adiciona(Contato co) throws SQLException{
		String sql = "insert into contato (nome, endereco, telefone, email, sexo) values (?, ?, ?, ?, ?)";
		PreparedStatement ptmt = conn.prepareStatement(sql); 
		
		
		
		ptmt.setString(1, co.getNome());
		ptmt.setString(2, co.getEndereco());
		ptmt.setString(3, co.getTel());
		ptmt.setString(4, co.getEmail());
		ptmt.setString(5, co.getSexo());
		
		ptmt.execute();
		ptmt.close();
	}
Oziel_Morais

Implementei mas mesmo assim continua aparecendo o mesmo erro. Vc’s tem mais dicas???

Fexx

Qual o erro?

Oziel_Morais

Esse erro aqui em baixo.
[color=red]com.mysql.jdbc.exceptions.jdbc4.MYSQLSyntaxErrorException: Unknown column ‘data’ in ‘field list’[/color]

Fexx

Cara testei aqui e está ok, veja:

public class Conexao {

	// função para conexão com Banco

	private static final String DRIVER = "org.gjt.mm.mysql.Driver";
	private static final String BANCO = "java";
	private static final String URL = "localhost";
	private static final String CONNECTION = "jdbc:mysql://" + URL + ":3306/"
			+ BANCO;
	private static final String USUARIO = "root";
	private static final String SENHA = "root";
	Connection con = null;

	public Connection conecta() {
		try {
			Class.forName(DRIVER);
			con = DriverManager.getConnection(CONNECTION, USUARIO, SENHA);
			JOptionPane.showMessageDialog(null, "Conectado com sucesso");
			return con;
		} catch (ClassNotFoundException e) {
			JOptionPane
					.showMessageDialog(
							null,
							"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n Driver não encontrado!\n"
									+ e, "ATENÇÃO", JOptionPane.WARNING_MESSAGE);
			return null;
		} catch (SQLException e) {
			JOptionPane
					.showMessageDialog(
							null,
							"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n Erro na Conexão com Banco\n"
									+ e, "ATENÇÃO", JOptionPane.WARNING_MESSAGE);

			// System.out.println("Conectado");
			return con;
		}
		// fim da conexao
		// ========================================================
	}

	void incluiFuncao() {
		Connection conn = conecta();
		try {
			PreparedStatement stmt = con
					.prepareStatement("insert into TabFuncao( nome, dataCadastro ) values (?,?)");

			// preenche os valores
			stmt.setString(1, "teste");
			stmt.setString(2, "27/01/2012");
			// executa
			stmt.execute();
			stmt.close();

			System.out.println("Função Cadastrada");
			conn.close();

		} 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);
		}

	}

	public static void main(String[] args) {
		Conexao c = new Conexao();
		c.incluiFuncao();
	}
}

verifique também o seu banco de dados.

Obs.: troque os parâmetros para conectar no seu banco.

Oziel_Morais

Fexx é o seguinte a mensagem de erro continua aparecendo mais os dados são inseridos certinhos no banco de dados, quando eu clico no botão salvar primeiro aparece a mensagem de erro e depois quando vou olhar os dados foram inseridos no banco de dados.

Oziel_Morais

Meu professor quer que eu crie um formulário JFrame para cadastrar uma senha e um login no banco, para executar assim que abrir a aplicação desktop para o usuário se logar como Administrador ou usuário comum e cada um vai abrir uma página diferente, e não estou conseguindo vc não teria um exemplo parecido pra postar pra mim dar uma olhada???

ViniGodoy

Movido para o fórum de persistência.

Criado 26 de janeiro de 2012
Ultima resposta 29 de jan. de 2012
Respostas 11
Participantes 4