I'm stuck to do a submit in two kind of fields that get the user input on the form (view) and insert at the database, I've already tried to search and find something on the net and all that I saw were codes that automatically insert the date and time from the pc, but that I want is insert data typed by the user, I'm trying to do this way:
Call model class:
package br.com.jdbc.victor.model;
import java.sql.Date;
import java.sql.Time;
/**
*
* @author Victor
*/
public class Call {
private Long callId;
private String priority;
private int priorityId;
private Long priorityDetailId;
private Date initialDate, finalDate;
private Time initialTime, finalTime;
public Call(String priority, int priorityId, Date initialDate, Time initialTime, Time finalTime) {
this.priority = priority;
this.priorityId = priorityId;
this.initialDate = initialDate;
this.initialTime = initialTime;
this.finalTime = finalTime;
}
public Call(String priority, Long priorityDetailId) {
this.priority = priority;
this.priorityDetailId = priorityDetailId;
}
public Call(int priorityId, Long callId){
this.priorityId = priorityId;
this.callId = callId;
}
public Call(){
this.priority = getPriority();
this.priorityId = getPriorityId();
this.initialDate = getInitialDate();
this.initialTime = getInitialTime();
this.finalTime = getFinalTime();
//this.initialDate = new Date();
//this.initialTime = new Time();
//this.finalTime = new Time();
}
/* Getters and Setters.... */
}
MySQLCallDAO DAO Class:
package br.com.jdbc.victor.dao.daoentities;
import br.com.jdbc.dao.DAOException;
import br.com.jdbc.victor.controller.CallDAO;
import br.com.jdbc.victor.model.Call;
import br.com.jdbc.victor.model.PriorityDetail;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Victor
*/
public abstract class MySQLCallDAO implements CallDAO {
final String INSERT = "INSERT INTO calls (priority, priorityNum, initialDate, initialTime, finalTime) VALUES (?,?,?,?,?)";
final String GETALL = "SELECT * FROM calls";
final String GETID = "SELECT callId FROM calls ORDER BY callId DESC LIMIT 1";
final String ORDER = GETALL + " ORDER BY priorityNum, callId";
//SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
//SimpleDateFormat stf = new SimpleDateFormat("HH:mm");
private Connection con;
private PreparedStatement pstm;
private Statement stm = null;
private ResultSet rs = null;
public MySQLCallDAO(Connection con) {
this.con = con;
}
@Override
public void insert(Call o) throws DAOException {
try{
pstm = con.prepareStatement(INSERT);
pstm.setString(1, o.getPriority());
pstm.setInt(2, o.getPriorityId());
pstm.setDate(3, new java.sql.Date(o.getInitialDate().getTime()));
pstm.setTime(4, new Time(o.getInitialTime().getTime()));
pstm.setTime(5, new Time(o.getFinalTime().getTime()));
if(pstm.executeUpdate() == 0 ){
throw new DAOException("The update can't be saved");
}
} catch (SQLException ex) {
//throw new DAOException("SQL ERROR");
ex.printStackTrace();
} finally {
if(pstm != null){
try {
pstm.close();
} catch (SQLException ex) {
throw new DAOException("Error to close the connection", ex);
}
}
}
}
FormNewCall view class:
private void btSubmitActionPerformed(java.awt.event.ActionEvent evt) {
try {
Call call = new Call();
MySQLDaoManager man = new MySQLDaoManager("root", "", "localhost", "attendances", 3306);
//java.util.Date date_util = new java.util.Date();
//java.sql.Date date_sql = new java.sql.Date(date_util.getDate());
//java.sql.Time time_sql = new java.sql.Time(date_util.getTime());
try {
call.setPriority(cbPriorityDetail.getSelectedItem().toString());
call.setPriorityNum(Integer.parseInt(tfPriorityDetailId.getText()));
tfInitialDate.commitEdit();
/* The line that gives error under */
call.setInitialDate((Date) tfInitialDate.getValue());
call.setInitialTime(Time.valueOf(tfInitialTime.getText()));
call.setFinalTime(Time.valueOf(tfFinalTime.getText()));
man.getCallDAO().insert(call);
if(tfCallId.getText().length() != 0){
call.setCallId(Long.parseLong(tfCallId.getText()));
man.getCallDAO().update(call);
}
if(tfInitialDate.getValue() != null && tfInitialTime.getValue() != null && tfFinalTime.getValue() != null){
JOptionPane.showMessageDialog(rootPane, "User Inserted!", "Insert Successful", JOptionPane.INFORMATION_MESSAGE);
btNewActionPerformed(evt);
} else {
JOptionPane.showMessageDialog(rootPane, "Please, fill the fields again", "Insert not sucessful", JOptionPane.INFORMATION_MESSAGE);
btNewActionPerformed(evt);
}
} catch (DAOException ex) {
JOptionPane.showMessageDialog(rootPane, "MySQL Error", "Error", JOptionPane.ERROR_MESSAGE);
} catch (ParseException ex) { Logger.getLogger(FormNewCall.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(rootPane, "Error to make connection", "Error", JOptionPane.ERROR_MESSAGE);
}
}
So I've tried it in all the ways but the stacktrace exception:
run:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
at br.com.jdbc.victor.view.FormNewCall.btSubmitActionPerformed(FormNewCall.java:360)
at br.com.jdbc.victor.view.FormNewCall.access$500(FormNewCall.java:30)
at br.com.jdbc.victor.view.FormNewCall$6.actionPerformed(FormNewCall.java:152)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:184)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227)
at java.awt.Dialog.show(Dialog.java:1084)
at java.awt.Component.show(Component.java:1671)
at java.awt.Component.setVisible(Component.java:1623)
at java.awt.Window.setVisible(Window.java:1014)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at br.com.jdbc.victor.view.FormNewCall.lambda$main$0(FormNewCall.java:521)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
I'd like to know any tips to do a code to allow the user date and time input in database please?! Thanks a lot!!