Pessoal, tou precisando de uma forma. Sou iniciante em java e esbarrei num problema aqui numa aplicaçãozinha e tá me dando dor de cabeça.
É o seguinte: tenho um arquivo AtaBean e outro AtaDAO, nesse Bean tenho dois campos do tipo Date (sql.date)
[code]import java.sql.Date;
import java.sql.Time;
public class AtaBean {
private int cod_ata;
private int condominio_cod_cond;
private String numero_ata;
private String assunto_ata;
private Date data_reuniao;
private Time hora_reuniao;
private Date data_registro;
private String texto_ata;[/code]
E no no AtaDAO eu seto esse campos:
public void cadastrarAta(AtaBean b){
try {
pstm = (PreparedStatement) mysql.conectar().prepareStatement(cadastraAta);
pstm.setInt(1, b.getCondominio_cod_cond());
pstm.setString(2, b.getNumero_ata());
pstm.setString(3, b.getAssunto_ata());
pstm.setDate(4, b.getData_reuniao());
pstm.setTime(5, b.getHora_reuniao());;
pstm.setDate(6, b.getData_registro());
pstm.setString(7, b.getTexto_ata());
pstm.executeUpdate();
mysql.desconectar();
} catch (SQLException ex) {
Logger.getLogger(AtaDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
Aí tenho outro arquivo o AtaView (JFrame) que recebe os dados para colocar no banco de dados (mysql):
[code] private void btSalvarActionPerformed(java.awt.event.ActionEvent evt) {
SimpleDateFormat formatarData = new SimpleDateFormat(“yyyy-MM-dd”);
java.util.Date dataRegistro = (java.util.Date) txtDataRegistro.getValue();
java.util.Date dataReuniao = (java.util.Date) txtDataReuniao.getValue();
bean = new AtaBean();
dao = new AtaDAO();
if (!"".equals(txtCodigo.getText())) { //verifica se o campo código é vazio, se for o botão salvar funciona como inserção, senão, como alteração
if (validaDados()) {
bean.setCondominio_cod_cond(Integer.parseInt(txtCodCondominio.getText().trim()));
bean.setNumero_ata(txtNumeroAta.getText().trim());
bean.setAssunto_ata(txtAssunto.getText().trim());
bean.setData_reuniao(Date.valueOf(formatarData.format(dataReuniao)));
bean.setHora_reuniao(Time.valueOf(txtHoraReuniao.getText().trim()));
bean.setData_registro(Date.valueOf(formatarData.format(dataRegistro)));
bean.setTexto_ata(txtConteudo.getText().trim());
//recebe o código para fazer a alteração
bean.setCod_ata(Integer.parseInt(txtCodigo.getText().trim()));
dao.alterarAta(bean);
JOptionPane.showMessageDialog(null, "Registro alterado com sucesso!");
limpaDados();
jScrollPane1.setVisible(true);
PanelPesquisar.setVisible(true);
PanelCentralDados.setVisible(false);
txtPesquisar.requestFocus();
verificaBotoes();
limparPesquisaActionPerformed(null);
}
} else {
if (validaDados()) {
bean.setCondominio_cod_cond(Integer.parseInt(txtCodCondominio.getText().trim()));
bean.setNumero_ata(txtNumeroAta.getText().trim());
bean.setAssunto_ata(txtAssunto.getText().trim());
bean.setData_reuniao(Date.valueOf(formatarData.format(dataReuniao)));
bean.setHora_reuniao(Time.valueOf(txtHoraReuniao.getText().trim()));
bean.setData_registro(Date.valueOf(formatarData.format(dataRegistro)));
bean.setTexto_ata(txtConteudo.getText().trim());
dao.cadastrarAta(bean);
JOptionPane.showMessageDialog(null, "Registro incluído com sucesso!");
limpaDados();
jScrollPane1.setVisible(true);
PanelPesquisar.setVisible(true);
PanelCentralDados.setVisible(false);
txtPesquisar.requestFocus();
verificaBotoes();
limparPesquisaActionPerformed(null);
}
}
} [/code]
A máscara é essa:
private void mascaras() {
try {
txtDataReuniao.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##/##/####")));
txtDataRegistro.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##/##/####")));
txtHoraReuniao.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##:##:##")));
} catch (java.text.ParseException ex) {
ex.printStackTrace();
}
}
Só que quando executo o programa as máscaras funcionam belezinha, mas na hora de salvar dá o seguinte erro:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date
at br.com.syndic.view.AtaView.btSalvarActionPerformed(AtaView.java:597)
at br.com.syndic.view.AtaView.access$700(AtaView.java:29)
at br.com.syndic.view.AtaView$8.actionPerformed(AtaView.java:416)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener$Actions.actionPerformed(BasicButtonListener.java:303)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1661)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2879)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:306)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:250)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2971)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2963)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2842)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1908)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:752)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1017)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:889)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:717)
at java.awt.Component.dispatchEventImpl(Component.java:4730)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Isso tá me dando uma dor de cabeça enorme porque se eu tirar as máscaras das datas funciona beleza, só que aí fica muito deselegante e ruim um sistema sem máscaras.
Alguém pode me ajudar?
PS.: Desculpem o tamanho do post, mas eu queria detalhar bem. Outra coisa, encontrei alguns fóruns por aqui como http://www.guj.com.br/java/256526-erro-javautildate-cannot-be-cast-to-javasqldateresolvido, mas não resolveu o meu caso.