我正在爲我的項目使用NetBeans開發一個簡單的醫院管理系統,所以這裏是我的問題。當患者承認並且從醫院出院時,他/她的入院日期和出院日期應該被記錄下來。所以我把兩個jDateChooser用於入場和出場。所以當一個新患者承認我必須保持排出日期jDateChooser空白並保存。如何使用jdatechooser從MySQL數據庫保存和檢索空日期
我改變了jDateChoosers的日期格式
"yyyy-MM-dd"
(我用mysql控制中心0.9.4創建我的數據庫和表)首先,我試圖通過改變放電柱保存日期( dod)數據 鍵入'date',那麼異常跳轉如下。
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data truncated for column 'dod' at row
然後我試圖改變數據類型「VARCHAR」,並允許空值 ,確定這一次在DB保存的空白沒有問題。
當檢索患者的信息時,我已經將入院和出院日期編碼爲分別出現在兩個jDateChoosers中。但一個例外產生這樣
java.text.ParseException:不可解析日期: 「」 在java.text.DateFormat.parse(DateFormat.java:357) 在Patient.pidKeyReleased(Patient.java:455) 在Patient.access $ 000(Patient.java:23) 在患者$ 1.keyReleased(Patient.java:118) 在java.awt.Component.processKeyEvent(Component.java:6466)
這是代碼和涉及日期問題的進口:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;`
這在保存按鈕
try {
Statement stmt = connection.hosp().createStatement();
String dt = ((JTextField)doa.getDateEditor().getUiComponent()).getText();
String dt1 = ((JTextField)dod.getDateEditor().getUiComponent()).getText();
stmt.executeUpdate("insert into patients values ('"+pid.getText()+"','"+nic.getText()+"','"+fname.getText()+"','"+lname.getText()+"','"+age.getText()+"','"+address.getText()+"','"+contact.getText()+"','"+ptype.getSelectedItem()+"','"+wardname.getText()+"','"+wardno.getText()+"','"+roomno.getText()+"','"+diagnosis.getText()+"','"+doctor.getText()+"','"+consultant.getText()+"','"+dt+"','"+dt1+"')");
} catch (Exception e) {
e.printStackTrace();
}
這是搜索代碼編碼,它是在文本框中編碼,並且操作keyrelease。 這是上述異常java.text.ParseException:Unparseable date:「」來的地方。
try {
Statement s = connection.hosp().createStatement();
String ss = pid.getText().trim();
ResultSet rs = s.executeQuery("select * from patients where patient_id like ('%"+ss+"%')");
while(rs.next()){
nic.setText(nics);
fname.setText(fnames);
lname.setText(lnames);
.... etc
String datevalue=rs.getString(16);
String datevalue1=rs.getString(17);
DateFormat formatter ;
Date date, date1;
formatter = new SimpleDateFormat("yyyy-MM-dd");
date = (Date)formatter.parse(datevalue);
date1 = (Date)formatter.parse(datevalue1);
doa.setDate(date);
dod.setDate(date1);
}
}catch (Exception e) {
e.printStackTrace();
}
如果要解決這個問題請提任何其他方法。
您需要提供更多的細節關於兩者的情況下,如相關代碼和異常,你是如何試圖插入值和你是如何試圖提取他們等等。 – Smit
謝謝斯密特的快速反應,我已經添加了相關的代碼。 –