Получить объект Date из базы данных MySQL и показать его в отформатированном текстовом поле

0

Я пытаюсь получить дату рождения из моей базы данных и отобразить ее на JFormattedTextField. Он должен отображаться в формате мм/дд/гггг, но хранится в формате гггг/дд/мм. Как бы я пошел по этому поводу? Дата рождения пациента сохраняется как java.sql.Date.

    JLabel lbl3 = new JLabel("Date of Birth:");
    lbl3.setBounds(17, 129, 90, 22);
    lbl3.setForeground(Color.WHITE);
    lbl3.setFont(new Font("Microsoft New Tai Lue", Font.PLAIN, 16));

    JFormattedTextField formattedDob = new JFormattedTextField();
    formattedDob.setEditable(false);
    formattedDob.setText("//");
    formattedDob.setBounds(201, 128, 183, 22);
    contentPane.add(formattedDob);  

JButton btnSearchPatient = new JButton("Search");
        btnSearchPatient.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                PatientSQL searchPatient = new PatientSQL();
                Patient staff = searchPatient.getBySSN(patient.getSsn());

            txtAddress1.setText(staff.getAddress1());
            txtAddress2.setText(staff.getAddress2());
            txtCity.setText(staff.getCity());
        }
    });

Вот мой PatientSQL.java для справки (нерелевантный код, такой как пакеты и функции, был удален для удобства чтения):

public class PatientSQL {
    private SessionFactory factory;

    public PatientSQL() {
        try {
            factory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            System.err.println("Failed to create sessionFactory object." + ex);

            throw new ExceptionInInitializerError(ex);
        }
    }

    /* Method to CREATE a patient in the database */
    public void add(String fname, String lname, String ssn, java.sql.Date dob, String phoneNo, String address1, String address2, String city, String zipcode, String allergy1, String allergy2, String allergy3, String photo) {
        Patient patient = new Patient(fname, lname, ssn, dob, phoneNo, address1, address2, city, zipcode, allergy1, allergy2, allergy3, photo);

        add(patient);
    }

    public Patient getBySSN(String ssn) {
        Session session = factory.openSession();
        Patient patient = null;

        try {
            patient = (Patient) session.get(Patient.class, ssn);

        } catch (HibernateException e) {
            System.err.println("Can not find patient ssn: " + ssn);
        } finally {
            session.close();
        }

        return patient;
    }

}
  • 0
    сумасшедшая идея Позвольте mysql обрабатывать хранение даты в своем собственном формате ( YYYMMDD ), и у вас будет собственный тип для вывода формата, как требуется.
  • 0
    Если ваша дата хранится как Дата, то она не имеет формата, и вам нужно только применить к ней форматирование.
Показать ещё 1 комментарий
Теги:
hibernate

3 ответа

0

Возможно, вам следует попытаться преобразовать Date: используйте LocalDateTime # parse() (или ZonedDateTime # parse(), если в строке содержится часть часового пояса), чтобы проанализировать строку в определенном шаблоне в LocalDateTime. лайк:

String date_s = "2011/01/18"; 
SimpleDateFormat dt = new SimpleDateFormat("yyyy/dd/mm"); 
Date date = dt.parse(date_s); 
SimpleDateFormat dt1 = new SimpleDateFormat("mm/dd/yyyy");
System.out.println(dt1.format(date));
0

Глупые требования требуют глупых ответов:

CREATE TABLE patient (
...
dob_string VARCHAR(8),
dob_date AS (STR_TO_DATE(dob_string,"%Y/%d/%m"))
)

Так что dob_string в dob_string и dob_date из dob_date а затем dob_date формат по мере необходимости.

0

Если можно использовать SimpleDateFormat

SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
df.format(patient.getDob()); //I'm guessing what the get method is named but you get what I mean

Ещё вопросы

Сообщество Overcoder
Наверх
Меню