양식 (보기)에서 사용자 입력을 가져 와서 데이터베이스에 삽입하는 두 가지 종류의 필드에서 제출을 수행해야하는데 이미 검색을 시도하고 무언가를 찾으려고했습니다. 그물과 내가 본 모든 것은 자동으로 PC로부터 날짜와 시간을 삽입하는 코드 였지만, 사용자가 입력 한 데이터를 삽입하고 싶습니다. 다음과 같이하려고합니다 :날짜 및 시간 형식을 입력하는 방법
호출 모델 클래스 :
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 클래스 :
,536,913,63210
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);
}
}
}
}
run:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
\t at br.com.jdbc.victor.view.FormNewCall.btSubmitActionPerformed(FormNewCall.java:360)
\t at br.com.jdbc.victor.view.FormNewCall.access$500(FormNewCall.java:30)
\t at br.com.jdbc.victor.view.FormNewCall$6.actionPerformed(FormNewCall.java:152)
\t at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
\t at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
\t at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
\t at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
\t at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
\t at java.awt.Component.processMouseEvent(Component.java:6533)
\t at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
\t at java.awt.Component.processEvent(Component.java:6298)
\t at java.awt.Container.processEvent(Container.java:2236)
\t at java.awt.Component.dispatchEventImpl(Component.java:4889)
\t at java.awt.Container.dispatchEventImpl(Container.java:2294)
\t at java.awt.Component.dispatchEvent(Component.java:4711)
\t at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
\t at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
\t at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
\t at java.awt.Container.dispatchEventImpl(Container.java:2280)
\t at java.awt.Window.dispatchEventImpl(Window.java:2746)
\t at java.awt.Component.dispatchEvent(Component.java:4711)
\t at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
\t at java.awt.EventQueue.access$500(EventQueue.java:97)
\t at java.awt.EventQueue$3.run(EventQueue.java:709)
\t at java.awt.EventQueue$3.run(EventQueue.java:703)
\t at java.security.AccessController.doPrivileged(Native Method)
\t at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
\t at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
\t at java.awt.EventQueue$4.run(EventQueue.java:731)
\t at java.awt.EventQueue$4.run(EventQueue.java:729)
\t at java.security.AccessController.doPrivileged(Native Method)
\t at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
\t at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
\t at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
\t at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
\t at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
\t at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:184)
\t at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229)
\t at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227)
\t at java.security.AccessController.doPrivileged(Native Method)
\t at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227)
\t at java.awt.Dialog.show(Dialog.java:1084)
\t at java.awt.Component.show(Component.java:1671)
\t at java.awt.Component.setVisible(Component.java:1623)
\t at java.awt.Window.setVisible(Window.java:1014)
\t at java.awt.Dialog.setVisible(Dialog.java:1005)
\t at br.com.jdbc.victor.view.FormNewCall.lambda$main$0(FormNewCall.java:521)
\t at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
\t at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
\t at java.awt.EventQueue.access$500(EventQueue.java:97)
\t at java.awt.EventQueue$3.run(EventQueue.java:709)
\t at java.awt.EventQueue$3.run(EventQueue.java:703)
\t at java.security.AccessController.doPrivileged(Native Method)
\t at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
\t at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
\t at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
\t at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
\t at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
\t at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
\t at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
\t at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
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);
}
}
그래서 나는 모든 방법하지만 스택 트레이스 예외를 시도했습니다
내가하시기 바랍니다 데이터베이스의 사용자 날짜와 시간 입력을 허용하는 코드를 할 어떤 조언을 알고 싶습니다! 고마워요 !!
왜 java.util.Date가 왜 java.sql.date를 사용하고 사용하지 않는에 반환 형식으로 된 다음 개체가되었다? 특별한 요구 사항이 있습니까? – Irakli
이 예외가 발생하는 위치에 대해 구체적으로 설명하십시오. 전체 스택 추적을 게시하고 예외 위치를 나타냅니다. 우리는'java.util.Date'를'java.sql.Date'에 던져 넣으려는 곳을 찾기 위해 코드의 벽을 살펴 보려고하지 않습니다. –
@JONIVar 그는 JDBC를 사용하면서 결국에는 java.sql.Date (또는 java.sql.Timestamp)를 필요로합니다. –