내 AccessDB에서 테이블을 업데이트하려고하는데 이상한 문제가 있습니다. 예외가 발생하지 않고 업데이트가 실행되지만 날짜 값이 잘못되어 레코드를 업데이트 할 때마다 값이 항상 "30/12/1899"로 변경됩니다. 새 레코드를 삽입하려고 할 때 동일한 문제가 발생합니다.Access 데이터베이스에서 Java로 날짜 삽입 - 이상한 문제
내 DB에 날짜 필드는 ShortDate 형식입니다. 여기
내 코드의 예입니다, 나는 버튼을 만들어 누를 때 나는 df.format의 결과를 나타내는 메시지가 있었다private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
if (jList1.isSelectionEmpty()) {
JOptionPane.showMessageDialog(null, "You have not selected any computer!");
} else {
try {
String sql = "Update SYSTEMS set "
+ " CPU='" + cpuTextField.getText().trim()
+ "', MOBO='" + moboTextField.getText().trim()
+ "', RAM='" + ramTextField.getText().trim()
+ "', GPU='" + gpuTextField.getText().trim()
+ "', HDD='" + hddTextField.getText().trim()
+ "', PSU='" + psuTextField.getText().trim()
+ "', MONITOR='" + monitorTextField.getText().trim()
+ "', KEYBOARD='" + keyboardTextField.getText().trim()
+ "', MOUSE='" + mouseTextField.getText().trim()
+ "', OS='" + osTextField.getText().trim()
+ "', SOFTWARE='" + othersTextArea.getText().trim()
+ "', PURCHASE_DATE=" + df.format(jDateChooser1.getDate())
+ " where SYSTEM_ID='" + jList1.getSelectedValue().toString() + "'";
st = con.prepareStatement(sql);
st.executeUpdate();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
JOptionPane.showMessageDialog(null, "Updated");
}
}
잘못 무슨 일이 일어나고 있는지 파악하기 위해서
(jDateChooser1 .getDate()) 및 에 정확한 날짜가 표시되었습니다.private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
JOptionPane.showMessageDialog(null, df.format(jDateChooser1.getDate()));
}
나는 날짜를 얻을이 구성 요소를 사용하고 있습니다 :
JCalendar을 그 어떤 차이가있는 경우. 날짜를 올바르게 가져 오면 평범한 TextField로 바꾸지 않아도됩니다. select를 사용하여 DB에서 날짜를 검색 할 때 모든 것이 잘됩니다. 이 문제는 업데이트/삽입 할 때만 발생합니다.
문제가 해결되었습니다. 감사! 그것은 매력처럼 작동했습니다. –