【发布时间】:2012-01-17 16:14:09
【问题描述】:
我正在尝试更新我的 AccessDB 中的一个表,但我遇到了一个奇怪的问题。 更新执行时不会引发任何异常,但日期值错误并且 每次我更新记录时,值总是更改为“30/12/1899”。 当我尝试插入新记录时,也会发生同样的事情。
在我的数据库中,日期字段是 ShortDate 格式。
这是我的代码示例:
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");
}
}
为了弄清楚出了什么问题,我做了一个按钮,按下时我有 显示 df.format(jDateChooser1.getDate()) 和结果的消息 它显示了正确的日期。
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
JOptionPane.showMessageDialog(null, df.format(jDateChooser1.getDate()));
}
我正在使用这个组件来获取日期:JCalendar 如果这有什么不同的话。 只要正确导入日期,我不介意用纯文本字段替换它。 当使用 select 从数据库中检索日期时,一切顺利。 该问题仅在更新/插入时发生。
【问题讨论】: