我正在为我的项目使用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
谢谢斯密特的快速反应,我已经添加了相关的代码。 –