Inserir uma data ou um double utilizando prepared

5 respostas
manhanijava

galera pra eu gravar data e valores no banco, faço uma baita maracutaia, tipo fazer rotinas nos textfiels pra que virgula se torne ponto, ou até mesmo fazer um simpleDateFormat na data....

passeando pelo guj, pra tentar responder também algumas perguntas de usuários menos esclarecidos até do que eu, me deparei com uma dúvida, li em algum lugar que se eu utilizar um preparedStatement, eu não precisaria fazer tanta acrobacia pra gravar a data e os valores? isto é correto???
colei o tópico abaixo que ensina a usar o preparedStatement....

consegui gravar string normalmente, mas não consigo gravar uma data ou um double....segue meu código pra alguém me ajudar..
ah outra coisa, o meu banco vai receber os dados dos textfields.

http://www.guj.com.br/posts/list/40126.java

este código esta no evento action do botão gravar.
CfopScience cfop = new CfopScience();

        cfop.setCodigo(tfCodigo.getText());
        cfop.setDescricao(tfDescricao.getText());
        cfop.setData(ftfData.getText());
        cfop.setValor(tfValor.getText());


        try {
            Class.forName(driver);
            con = DriverManager.getConnection(url, user, password);

            String sql = "INSERT INTO tbl_cfop (varchar_codigo_cfop, varchar_descricao_cfop, date_data_cfop,"
                    + " double_valor_cfop) VALUES (?, ?, ?, ?)";
            PreparedStatement stmt = con.prepareStatement(sql);

            stmt.setString(1, cfop.getCodigo());
            stmt.setString(2, cfop.getDescricao());
            stmt.setDate(3, (Date) cfop.getData());
            stmt.setDouble(4, cfop.getValor());


            stmt.executeUpdate();
            stmt.close();
            con.close();
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(TestandoPrepared.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception e) {
        }
e este código está na minha classe do mapeamento.
package Testandosciencecfop;

import java.util.Date;

/**
 *
 * @author Paulo
 */
public class CfopScience {

    private String codigo;
    private String descricao;
    private Date data;
    private double valor;

    
    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }


    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public Date getData() {
        return data;
    }

    public void setData(Date data) {
        this.data = data;
    }

    public double getValor() {
        return valor;
    }

    public void setValor(double valor) {
        this.valor = valor;
    }

}

alguém me da uma dica como posso buscar dos textfields a data digitada e o valor??? se tem algum tratamento antes ou depois??

5 Respostas

Johnnie_Wlaker

Fala Paulão…

Meu xará!!!

Olha só, sou novatão mesmo, mas me deparei com um problema parecido e resolvi da seguinte forma:

Onde você gravou:

stmt.setDate(3, (Date) cfop.getData());

Eu usei assim:

stmt.setDate(3, new Date(cfop.getData().getTimeInMillis()));

Creio que deve resolver…

Boa sorte.

manhanijava

Johnnie Wlaker:
Fala Paulão…

Meu xará!!!

Olha só, sou novatão mesmo, mas me deparei com um problema parecido e resolvi da seguinte forma:

Onde você gravou:

stmt.setDate(3, (Date) cfop.getData());

Eu usei assim:

stmt.setDate(3, new Date(cfop.getData().getTimeInMillis()));

Creio que deve resolver…

Boa sorte.

deu certo não…

manhanijava

alguém ajuda ai please

A

quando tiver algum problema é importante você colocar a mensagem de erro, stacktrace, mensagens do compilador pra gente localizar o erro…

esse seu código compila?

essas linhas aqui devem dar erro de tipo:

cfop.setData(ftfData.getText());  
  cfop.setValor(tfValor.getText());

setData espera um Date e você está passando String
setValor espera um Double e você está passando Date

manhanijava

quando tiver algum problema é importante você colocar a mensagem de erro, stacktrace, mensagens do compilador pra gente localizar o erro…

esse seu código compila?

essas linhas aqui devem dar erro de tipo:

cfop.setData(ftfData.getText());  
  cfop.setValor(tfValor.getText());

setData espera um Date e você está passando String
setValor espera um Double e você está passando Date

bom consegui resolver o problema do double…vou colar a linha

cfop.setValor(Double.valueOf(tfValor.getText()));

com isto ai consegui, gravar o double tranquilamente la no banco de dados, ai fiz uma rotina no textfield toda vez que digitar ou prssionar vírgula, ele se torna ponto.

agora falta a data

cfop.setData(ftfData.getText());
este pedaço de código ai na realidade nem compila, esta incorreto dar um getText, por que na classe que estou mapeando o tipo do objeto é um date, só que não existe um getDate pra mim pegar do textfield…que método eu poderia usar???

Criado 13 de setembro de 2010
Ultima resposta 14 de set. de 2010
Respostas 5
Participantes 3