Erro ao persistir Dados, UsuarioDAO

Bom dia !

Está dando um erro ao persistir dados no banco de dados. Minha chave primária é idUsuario, tenho que colocar o idUsuario como um atributo de Usuario também não é
isso, cheguei a colocar mas o seguinte erro logo abaixo, vejam a STACK TRACE. Alguém pode me ajudar?

public class UsuarioDAO {
        
    public UsuarioDAO(){ 
        
    }    
    public boolean inserirDados(Usuario usuario){
    
        usuario = new Usuario();
        Connection con = Conexao.conectar();
        String inserir = "INSERT INTO usuario(idUsuario,nome,endereco,telefone,email) values(?,?,?,?,?)";
        try {
            
            PreparedStatement pst = con.prepareStatement(inserir);
            pst.setInt(1, usuario.getCodigo());
            pst.setString(2, usuario.getNome());
            pst.setString(3, usuario.getEndereco());
            pst.setString(4, usuario.getTelefone());
            pst.setString(5, usuario.getEmail());
            pst.execute();
            con.close();
            return true;
            
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }        
        
        
    }
    
}


Starck Trace

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column ‘nome’ cannot be null
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
at com.mysql.jdbc.Util.getInstance(Util.java:382)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1039)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3603)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3535)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1989)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2150)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2333)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2318)
at PUC.com.persistencia.UsuarioDAO.inserirDados(UsuarioDAO.java:43)
at PUC.com.controle.UsuarioControle.verificarDados(UsuarioControle.java:22)
at PUC.com.visao.Apresentacao.cadastrarDados(Apresentacao.java:39)
at PUC.com.visao.PUControleMedicamento.main(PUControleMedicamento.java:26)
Digito Inválido !
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:443)
at java.lang.Integer.parseInt(Integer.java:514)
at PUC.com.visao.PUControleMedicamento.main(PUControleMedicamento.java:19)
CONSTRUÇÃO PARADA (tempo total: 19 segundos)

E ai Welder!

O STACK TRACE ta informando que o campo nome não pode ser nulo, o que você pode fazer é o seguinte.

  • Valida os dados antes de mandar inserir, isso vai garantir que o atributo não esta nulo.
  • Essa usuario = new Usuario() não vi utilidade para ele, sendo que você já ta informando o objeto como parametro/argumento, ou seja, pode utilizar o mesmo
    do parametro/argumento.

Fazendo isto acredito que seu código irá funcionar.

Qualquer coisa só falar.

É isso ai faz o que o amigo disse logo a cima valida se o campo esta null, e se esse campos é not null no seu banco faz uma validação na tela tbm ^^

valew

t+

na verdade o erro está justamente aqui

usuario = new Usuario();

fazendo isso vc está atribuindo um novo objeto a sua variável usuário, e consequentemente todos os atributos estarão nulos, então na hora de inserir no banco da erro nas propriedades not null

puts verdade não tinha me atentado a isso

ele ta anulando o objeto que ele recebe.

Pessoal valeu demais, era isso mesmo.

Mas tenho outro dúvida, alguém pode me ajduar?

Como inserir dados em tabelas relacionadas?

Por exemplo:

tabela login

  • idLogin - PK
  • email
  • senha

tabela usuario
-nome
-end
-telefone

  • idLogin - FK

Primeiro tenho que inserir os dados na tabela login depois em usuario
como, como faço para pegar o autoincremento da tabela login?

Exemplo :

INSERT INTO login (’’,email,senha) values(?,?,?)
INSERT INTO usuario (’’,nome,end,telefone //idLogin como faço para pegar o autoIncremento? ) values(?,?,?)

Você pode usar método getGeneratedKeys(), dá uma olhada nos 3 últimos posts daqui:
http://www.guj.com.br/java/114797-duvida-com-jdbc-e-chave-primaria-auto-increment