1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Jtextfield recebendo variável do tipo date

Pessoal quero agradecer a todos o colaboradores pela a ajuda nas minhas perguntas. Descrição do assunto: eu tenho no meu Jframe dois campos data e falta. No banco de dados MySQL as tabelas data do tipo date e falta do tipo char. No java ficou assim: Classe Banco de Dados (conexão):

mport java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;

/**
 *
 * @author CarlosAlberto
 */
public class BancoDeDados {
    private Connection conn;
    private Statement stm;
    public static final String URL = "jdbc:mysql://localhost/controle_acesso_frequencia";
    public static final String USUARIO = "root";
    public static final String SENHA = "root";    

    /**
     * Conecta ao banco de dados utilizando o driver MySQL
     * @param url URL do banco de dados
     * @param userName Nome do usuário do banco de dados
     * @param password Senha do usuário
     * @throws ClassNotFoundException
     * @throws SQLException 
     */
    public void conectar(String url, String userName, String password) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection(url, userName, password);
        stm = conn.createStatement();
    }

    /**
     * Desconecta do banco de dados
     * @throws SQLException 
     */
    public void desconectar() throws SQLException {
        stm.close();
        conn.close();
    }

    public ArrayList<HashMap<String, Object>> consultar(String select) throws SQLException {
        ResultSet rst = stm.executeQuery(select);
        ResultSetMetaData metaData = rst.getMetaData();
        ArrayList resultado = new ArrayList();
        //percorre as linhas/registros
        while (rst.next()) {
            HashMap colunas = new HashMap();
            //percorre as colunas do ResultSet, utilizando o contador de colunas do ResultSetMetaData
            for (int i=1; i<=metaData.getColumnCount(); i++) {
                //adiciona um valor no HashMap de colunas, utilizando o nome da coluna como chave
                colunas.put(metaData.getColumnName(i), rst.getObject(i));
            }
            resultado.add(colunas);
        }
        return resultado;
    }

    public int incluir(String sql) throws SQLException {
        return executeUpdate(sql);
    }

    public int alterar(String sql) throws SQLException {
        return executeUpdate(sql);
    }

    public int excluir(String sql) throws SQLException {
        return executeUpdate(sql);
    }

    private int executeUpdate(String sql) throws SQLException {
        return stm.executeUpdate(sql);
    }
}

Classe Objeto:

import java.sql.Date;

/**
 *
 * @author CarlosAlberto
 */
public class testevo {
    private Date data;
    private String falta;

    public testevo(){

    }
    public Date getData(){
        return data;
    }
    public String getFalta(){
        return falta;
    }
    public void setData(Date data){
        this.data = data;
    }
    public void setFalta (String falta){
        this.falta = falta;
    }

}

Classe Model:

import br.com.bd.BancoDeDados;
import br.com.vo.testevo;

/**
 *
 * @author CarlosAlberto
 */
public class testemodel {
     public int inserirfalta(testevo vo) {
        String sql = "INSERT INTO controle_acesso_frequencia.frequencia"
                + " (data_frequencia,fata) VALUES ('" +
                vo.getData()+ "', '" + vo.getFalta() + "');";
        int faltasinserida = -1;
        try {
            BancoDeDados bd = new BancoDeDados();
            bd.conectar(BancoDeDados.URL, BancoDeDados.USUARIO, BancoDeDados.SENHA);
            faltasinserida = bd.incluir(sql);
            bd.desconectar();
        }
        catch(Exception ex) {
            ex.printStackTrace();
        }        
        return faltasinserida;
    }
}

Classe JFrame

import br.com.model.testemodel;
import br.com.vo.testevo;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.text.MaskFormatter;

/**
 *
 * @author CarlosAlberto
 */
public class testeview extends javax.swing.JFrame {
    private enum estadosTela {insert};
    private estadosTela estadoAtual = estadosTela.insert;

    /**
     * Creates new form testeview
     */
    public testeview() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jCheckBox1 = new javax.swing.JCheckBox();
        jFormattedTextField1 = new javax.swing.JFormattedTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);

        jLabel1.setText("Data");

        jButton1.setText("salvar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jCheckBox1.setText("Falta");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(42, 42, 42)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButton1)
                    .addComponent(jCheckBox1)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addGap(18, 18, 18)
                        .addComponent(jFormattedTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(132, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(55, 55, 55)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jFormattedTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(jCheckBox1)
                .addGap(27, 27, 27)
                .addComponent(jButton1)
                .addContainerGap(43, Short.MAX_VALUE))
        );

        pack();
        setLocationRelativeTo(null);
    }// </editor-fold>                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       testevo vo = new testevo();
       vo.setData(jFormattedTextField1.getText());
       vo.setFalta(jCheckBox1.getText());

       testemodel model = new testemodel();
       if (estadoAtual == estadosTela.insert){
           model.inserirfalta(vo);
       }
        // TODO add your handling code here:
    }

Pois bem. Antes no banco o campo falta eu tinha colocado como char(1) porém ao setar (classe JFrame) vo.setFalta (jcheckbox1.getText(); da erro de incompatibilidade entre char e String. Agora para data vo.setData(jFormatetedTextField.getText()) é incompatibilidade de date com String.

Alguém sabe como resolver isto?

Obrigado

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

3 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java ou faça a sua própria pergunta.