我正在使用 netbeans 为我的项目开发一个简单的医院管理系统,所以这里简要介绍一下我的问题。当患者入院和出院时,应记录其入院日期和出院日期。所以我放了两个jDateChooser用于入院和出院。所以当一个新病人承认我必须保持出院日期jDateChooser空白并保存。
我将 jDateChoosers 的日期格式更改为
"yyyy-MM-dd"
(我使用mysql控制中心0.9.4创建我的数据库和表)首先我尝试通过将放电列(dod)数据类型更改为“日期”来保存日期,然后异常跳转如下。
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data truncated for column 'dod' at row
然后我尝试将数据类型更改为'varchar'并允许空值,这一次没问题,它在数据库中保存了空白。
在检索患者信息时,我已将入院和出院日期编码为分别出现在两个 jDateChooser 中。但是会产生这样的异常
java.text.ParseException:无法解析的日期:“” at java.text.DateFormat.parse(DateFormat.java:357) at Patient.pidKeyReleased(Patient.java:455) at Patient.access$000(Patient.java:23) at患者 $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();
}
如果有任何其他方法可以解决此问题,请提及。