gpt4 book ai didi

java - 如何使用 jdatechooser 从 mysql 数据库中保存和检索空日期

转载 作者:行者123 更新时间:2023-11-29 03:03:50 25 4
gpt4 key购买 nike

我正在使用 netbeans 为我的项目开发一个简单的医院管理系统,所以这里简要介绍一下我的问题。当患者入院和出院时,应记录他/她的入院日期和出院日期。所以我放了两个 jDateChoosers 用于入院和出院。所以当一个新病人承认我必须将出院日期保留为空白并保存。

  • 我将 jDateChooser 的日期格式更改为 "yyyy-MM-dd"

  • (我使用 mysql control center 0.9.4 来创建我的数据库和表)首先我尝试通过更改放电列(dod)数据来保存日期键入 'date' 然后异常跳转如下。

    com.mysql.jdbc.MysqlDataTruncation:数据截断:数据在行的“dod”列被截断

  • 然后我尝试将数据类型更改为“varchar”并允许为 null值,没问题,这次它在数据库中保存了空白。

  • 在检索患者信息时,我对入院和出院日期进行了编码,以分别显示在两个 jDateChooser 中。但是会像这样生成异常

    java.text.ParseException:无法解析的日期:“”在 java.text.DateFormat.parse(DateFormat.java:357)在 Patient.pidKeyReleased(Patient.java:455)在 Patient.access$000(Patient.java:23)在 Patient$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();
}

这是搜索代码,它在文本框中进行编码, Action 是按键释放。这就是上述异常 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();
}

如果有任何其他方法可以解决此问题,请提出。

最佳答案

您还没有提供所有信息,所以我假设。无论如何,这就是我的发现。

  1. dtdt1 列从您的 insert 中编号为 1516 语句。

    String datevalue = rs.getString(16);  // Supposed to be 15   
    String datevalue1 = rs.getString(17); // Supposed to be 16
  2. 从列获取数据时使用 rs.getXXX("Column Name")(提供更多可见性)而不是 rs.getXXX("columnIndex") .

  3. 同时使用 JDBC PreparedStatement .目前你的应用没有回避 SQL Injection

  4. date 数据类型尽量不要使用varchar。使用 Date 这就是它们的设计目的。

关于java - 如何使用 jdatechooser 从 mysql 数据库中保存和检索空日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18990462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com