私のAccessDBでテーブルを更新しようとしていますが、私は奇妙な問題があります。 例外はスローせずに更新が実行されますが、日付値が正しくなく、レコードが更新されるたびに が更新されるたびに、値は常に「30/12/1899」に変わります。 新しいレコードを挿入しようとしているときに同じことが起こります。AccessデータベースにJavaの日付を挿入 - 奇妙な問題
私のDBでは、日付フィールドは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を。 日付が正しくインポートされていれば、それをプレーンTextFieldに置き換えるのは気になりません。 DBから日付を取得するためにselectを使用すると、すべてうまく行きます。 この問題は、更新/挿入時にのみ発生します。
問題が解決しました。ありがとう!それは魅力のように働いた。 –