如何输入日期和时间格式

时间:2016-10-22 07:47:56

标签: java date jdbc time crud

我坚持在两种字段中进行提交,在表单(视图)上获取用户输入并插入数据库,我已经尝试搜索并在网上查找内容我看到的所有代码都是自动从电脑插入日期和时间的代码,但我想要的是插入用户输入的数据,我试图这样做:

调用模型类:



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课程:



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视图类:



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);
        }
    }             




所以我在所有方面都尝试了它,但堆栈跟踪异常:



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)




我想了解任何提示代码以允许用户在数据库中输入日期和时间的提示吗?!非常感谢!!

2 个答案:

答案 0 :(得分:2)

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)

这可能意味着,在FormNewCall课程的顶部,您有类似import java.sql.DatetfInitialDate.getValue()的内容,java.util.Date会返回call.setInitialDate(new java.sql.Date(tfInitialDate.getValue().getTime())); 这些不同的课程而且不是以这种方式兼容。

解决此问题的最简单方法是在那里添加适当的转换。

java.sql.

可能你甚至可以省略getValue()包装说明符,因为它已经在你的导入中了。

更新它实际上变成了以下内容,因为返回类型是call.setInitialDate(new java.sql.Date(((java.util.Date)tfInitialDate.getValue()).getTime())); 上的对象

sub TrackList (TrackNum as string)  
    With TrackNum = Range ("A1:A11").Find("UserInput")
    Dim Title as String
    Title = Range (B2:B11").Find("TrackNum")
    Dim singer as string
    singer = Range(C2:C11").Find("Title")
    End With

    If userInput = TrackNum And userInput = Title and Title = Singer Then
    MsgBox "The following track(s) matches your search:" & title & singer

答案 1 :(得分:-1)

无法识别代码的错误。

您不应该使用date_util.getDate()。你可能想要的是date_util.getTime()

无论如何看看this link是否有帮助。