setDate

15 respostas
Naruto

boa tarde eu estou seguindo uma apostila da caelum mais fui mudando um pouco para aprender mais e aqui tenhu um erro

stmt.setDate(2, contatosDTO.getData());

ele não aceita eu por o setDate… mais os campos setStrind ele aceita de boa… alguem pode me ajudar???

vlww…

15 Respostas

B

De que tipo é o objeto stmt?

Se for um classe que vc criou, coloca a definição dela aí

Naruto
public boolean inserir(ContatosDTO contatosDTO){
		try{
			Connection con = Conexao.getConnection();
			PreparedStatement stmt = con.prepareStatement("Insert into contatos" +
					"(nome, data, endereco) values(?,?,?)");
			
		
			
			stmt.setString(1, contatosDTO.getNome());			
			stmt.setDate(2, contatosDTO.getData());			
			stmt.setString(3, contatosDTO.getEndereco());
			
			stmt.execute();
			stmt.close();
			System.out.println("Gravado com sucesso!");
			con.close();
			return true;
			
		}catch (SQLException e){
			e.printStackTrace();
			return false;
		}
	}

é isso aqui.... os String da certo mais o setDate nem o.O

fnandos

Passe a data para String com SimpleDateFormat

B

Na sua classe ContatosDTO o tipo do retorno do metodo getData é java.util.Date?

O erro que ta dando é de compilação ou de execução?

Pq se for de compilação… tem algo muito doido aí…

Eu uso o setDate do PS tranquilo…

Naruto

é erro de compilação o.O

cara e la na mnha classe ContatosDTO é java.util.Date sim
o.O

B

Naruto:
é erro de compilação o.O

cara e la na mnha classe ContatosDTO é java.util.Date sim
o.O

So para testar… no lugar de colocar o seu metodo getData, da uma new Date()… so para testar…

Naruto

mesma coisa rsrrsso o.O deixa eu evr o erro

O metodo setDate(int, Date) in the type PreparedStatement in not aplicable for the arguments (int, Date)

ViniGodoy

Atenção para a pegadinha, é tão maldosa que poderiam cobrar numa certificação:

O setDate do PreparedStatement aceita um java.sql.Date e não um java.util.Date.
O java.sql.Date é filho de java.util.Date.

Faça, então:

stmt.setDate(2, new java.sql.Date(contatosDTO.getData().getTime()));
Naruto

nussss deu certo mais eu tinha importado o java.sql.Date mais mesmo assim num dava ai vc fez isso ai deu certo :smiley:
vlwww

B

Faz isso:

stmt.setDate(2, new java.sql.Date( contatosDTO.getData().getTime() ) );

Vendo o doc da API do JDBC o parametro do setDate é java.sql.Date e nao java.util.Date. o java.sql.Date herda de java.util.Date

Deve funcionar

B

[quote=ViniGodoy]Atenção para a pegadinha, é tão maldosa que poderiam cobrar numa certificação:

O setDate do PreparedStatement aceita um java.sql.Date e não um java.util.Date.
O java.sql.Date é filho de java.util.Date.

Faça, então:

stmt.setDate(2, new java.sql.Date(contatosDTO.getData().getTime()));

Opa… nem deu tempo de ver o seu post… parece até q eu copiei e colei… rsrsrs

Pegadinha mesmo…

Naruto

sim sim ja funciono o.o mais porque so importado não dava certo??

B

Naruto:
sim sim ja funciono o.o mais porque so importado não dava certo??

Porque o tipo do retorno do getData é java.util.Date… e o parametro do PS setDate é java.sql.Date.

Então, sao tipos diferentes…

Se fosse ao contrário, o parametro esperado fosse java.util.Date e vc estivesse passando java.sql.Date, aí sim daria certo, porque java.sql.Date herda de java.util.Date.

Deu para entender ou eu so compliquei a situação?

Resumindo, a herança é um caminho de mao unica. Quando vc espera receber um parametro do tipo de uma classe Filha, a classe pai não será aceita… mas, se vc estiver esperando um parametro do tipo da classe pai e receber um filho, aí da certo.

Naruto

sim sim entendi heheheh :smiley:
vlwww caraa

J

Olá galera eu tava com o mesmo problema do nosso colega NARUTO no entanto ele foi grassas aos posts de vcs, só que quando importei java.sql.Date o contrutor vazio da minha classe deu problema que segue:

public Entidade() {

this.identidade = 0;

this.nome_entidade = “”;

this.nome_fantasia = “”;

this.tipo_pessoa = “”;

this.data_nascimento = new Date();

}

na linha negritada ele ta exigindo um parametro que não sei qual devo colocar, se alguem puder me ajudar

Criado 24 de julho de 2008
Ultima resposta 14 de jul. de 2013
Respostas 15
Participantes 5