Gravar campo Date, int e double vazio

13 respostas
Naruto

Boa tarde…
pessoal para gravar dados do tipo date, double ou int é necessario tratar isso no banco ou na aplicação??
pois c eu deixo uma data sem digita ai quando vo grava ele me manda uma mensagem no console … null

alguem poderia me ajudar?
vlw

13 Respostas

abelgomes

rapaz, nao da pra saber bem oque q tu querendo fazer, mas pelo jeito vc tem que tratar isso na aplicação…tipo, manda ai um exemplo do teu codigo…

Naruto

tpw quando vc vai gravar um campo do tipo date e vc naum preenche ele…

vc consegue gravar??? eu não consigo gravar enquanto o campo naum for prrenchido corretamente o.O ai queria saber c da pa gravar ele vazio saka
:smiley:
vlwww

F

Para gravar vazio vc deve ter modelado apropriadamente esta coluna no banco, ou seja a coluna deve aceitar null.
No caso eu costumo usar método setNull(), tipo faço um if no valor, se for nulo ou branco eu uso o setNull, pq normalmente vc não consegue fazer um setInt(null).

if(data == null)
     pstmt.setNull(1,Types.DATE);
else
     pstmt.setDate(1, data);

Era isso? :wink:

Naruto

eu vo testa aqui e te falo inton guenta aee :smiley:

Naruto

fausto:
Para gravar vazio vc deve ter modelado apropriadamente esta coluna no banco, ou seja a coluna deve aceitar null.
No caso eu costumo usar método setNull(), tipo faço um if no valor, se for nulo ou branco eu uso o setNull, pq normalmente vc não consegue fazer um setInt(null).

if(data == null)
     pstmt.setNull(1,Types.DATE);
else
     pstmt.setDate(1, data);

Era isso? :wink:

em que camada que eu faria esse if??? na camada CTR ou na VIEW ou na DAO :oops:

F

Você não está usando PreparedStatement? Está usando o hibernate?
No caso seria na DAO

Naruto

to usando o Eclipse e sim uso praparedstatement inton é no dao mesmo rsrsrs :smiley:
vlwww chega em casa vou testar aqui to sem o projeto
vlwww

abelgomes

eu uso o Hibernate! :wink: acho bem mas simples…

e isso é feito na DAO

Naruto

este é o meu DAO

public boolean inserirFuncionario(FuncionarioDTO funcionarioDTO) {
		try {
			Conexao.ConnectDB();
			Statement stmt = Conexao.con.createStatement();
			
				
			
			String Sql = "Insert into Funcionario(nome, cpf, rg, ctps, datanascimento, "
					+ "sexo, dataadmissao, datademissao, cargo, endereco, complemento, "
					+ "bairro, cidade, uf, cep, telres, telcel, email, comissao, usuario, "
					+ "senha, situacao, codfunc) values( "
					+ "'"
					+ funcionarioDTO.getNome()
					+ "', "
					+ "'"
					+ funcionarioDTO.getCpf()
					+ "', "
					+ "'"
					+ funcionarioDTO.getRg()
					+ "', "
					+ "'"
					+ funcionarioDTO.getCtps()
					+ "', "
					+ "'"
					+ funcionarioDTO.getDatanascimento()
					+ "', "
					+ "'"
					+ funcionarioDTO.getSexo()
					+ "', "
					+ "'"
					+ funcionarioDTO.getDataadmissao()
					+ "', "
					+ "'"
					+ funcionarioDTO.getDatademissao()
					+ "', "
					+ "'"
					+ funcionarioDTO.getCargo()
					+ "', "
					+ "'"
					+ funcionarioDTO.getEndereco()
					+ "', "
					+ "'"
					+ funcionarioDTO.getComplemento()
					+ "', "
					+ "'"
					+ funcionarioDTO.getBairro()
					+ "', "
					+ "'"
					+ funcionarioDTO.getCidade()
					+ "', "
					+ "'"
					+ funcionarioDTO.getUf()
					+ "', "
					+ "'"
					+ funcionarioDTO.getCep()
					+ "', "
					+ "'"
					+ funcionarioDTO.getTelres()
					+ "', "
					+ "'"
					+ funcionarioDTO.getTelcel()
					+ "', "
					+ "'"
					+ funcionarioDTO.getEmail()
					+ "', "
					+ "'"
					+ funcionarioDTO.getComissao()
					+ "', "
					+ "'"
					+ funcionarioDTO.getUsuario()
					+ "', "
					+ "'"
					+ funcionarioDTO.getSenha()
					+ "', "
					+ "'"
					+ funcionarioDTO.getSituacao()
					+ "', "
					+ "'"
					+ funcionarioDTO.getCodfunc() + "')";

			System.out.println(Sql);
			stmt.execute(Sql);
			
			
			Conexao.con.commit();
			Conexao.CloseDB();
			return true;

		} catch (Exception e) {

			System.out.println(e.getMessage());
			return false;
		}
	}

eu tentei passar a data como null mais nem da quando vo inserir c a data estiver vazia ele retorna no console assim:

null e naum grava

abelgomes

cara faz o seguinte…se tu conseguir, tu me avisa aqui no forum…se nao eu vou chegar em ksa umas 21:30 e de la eu dou uma olhada nos meus codigos de qaundo eu usava JDBC, mas pelo oque eu to vendo aqui…acho que falta fazer alguma coisa antes de fechar a conexao…

vou te mandar uma classes de conexao com banco que eu fazia, pq assim nao precisava ficar refazendo pra cada projeto…cria um .jar e parametriza pra tu dizer so o nome do banco, usuario, senha…fica bem mais agil para os proximos projetos, istoé, se vc nao mudar pra hibernate…

boa sorte…e fico no aguardo!!!

Naruto

aham ok c eu consegui eu aviso sim :smiley:

vlwww cara

Naruto

up

A

E aí Naruto, tudo bem ?

Então, vendo seu código, tenho duas dicas pra vc:

1 - Utiliza PreparedStatement ao invés de utilizar o Statement. Tem um tópico de exemplo dele aqui no GUJ
http://www.guj.com.br/posts/list/40126.java
Statement tem alguns “pequenos” problemas (SQL Injection, por exemplo ).

2 - Toda vez que você criar a conexão e tentar executar essa query, se ocorrer um erro (como deve estar acontecendo em algum dos métodos que retornam data no seu código), a conexão NÃO será fechada pois o erro vai ocorrer ANTES da linha 86. Como essa linha não será executada, a conexão criada não será finalizada.
Para resolver esse problema, feche a conexão dentro do block finally:

...
Conexao.con.commit();   
            return true;   
  
        } catch (Exception e) {   
  
            System.out.println(e.getMessage());   
            return false;   
        }
           finally {
        	Conexao.CloseDB();
        }   
    }

Em relação ao problema que você está tendo do null pointer pode ser por dois motivos:
1 - Essa coluna do banco não aceita valores nulos.
2 - Pode ser que a instância do objeto Date não está sendo inicializado e ao chamar getDataXXX da null pointer mesmo.

Blz ?

Se puder, coloca a classe Funcionário pra ver se a gente pode ajudar mais vc !

[]'s !

Criado 23 de julho de 2008
Ultima resposta 24 de jul. de 2008
Respostas 13
Participantes 4