【问题标题】:Displaying a date field from the java DB in 3 combo boxes in a Jform(GUI)在 Jform(GUI) 的 3 个组合框中显示来自 java DB 的日期字段
【发布时间】:2015-05-15 22:23:55
【问题描述】:

所以我一直忙于制作一个程序,该程序从 netbeans 中的 java db 中提取预设数据并将其显示在 Jform GUI 中。

我的所有数据都正确显示,但我的日期除外。在我的数据库中,它设置在日期字段中,因此它是一个值,但我需要它显示在 3 个单独的组合框中。

经过长时间的测试,我发现我的程序正在尝试将完整日期“dd/mm/yy”插入“dd”组合框、“mm”组合框和“yy”组合即使这些框没有正确的参数,请同时打开所有框,请您帮我弄清楚如何解决这个问题。

这是我的代码:

  try
   {
        //Connect to the DB
        String url = "jdbc:derby://localhost:1527/PAT_DB";

        Connection con = DriverManager.getConnection(url);
        Statement stmt = con.createStatement();

        String QuerySearch = "SELECT * FROM TBLPATIENTS WHERE PATIENT_ID = "+List1.getSelectedValue()+"";
        ResultSet rs = stmt.executeQuery(QuerySearch);


        while(rs.next())
        {
            PatientID_field.setText(rs.getString(1));
            FirstName_field.setText(rs.getString(2));
            LastName_field.setText(rs.getString(3));

            //This is where im having problems
            year_field.setSelectedItem(rs.getDate(4));
            month_field.setSelectedItem(rs.getDate(4));
            day_field.setSelectedItem(rs.getDate(4));
            //This is where im having problems

            Sex_field.setSelectedItem(rs.getString(5));
            Address_field.setText(rs.getString(6));
            City_field.setText(rs.getString(7));
            PostalCode_field.setText(rs.getString(8));
            Charge_field.setText(rs.getString(9));
            Paid_field.setSelectedItem(rs.getString(10));
            DoctorID_field.setText(rs.getString(11));

        }

附:我尝试将日期字段更改为 .getString 并且没有区别。 括号中的数字例如。

DoctorID_field.setText(rs.getString(11));

那(11)对应于数据在数据库中的表中所在的列。如果我标记超过 11 个,则该语句超出范围并且不起作用。

这是我的 GUI 截图:

【问题讨论】:

    标签: java sql database date combobox


    【解决方案1】:
    year_field.setSelectedItem(rs.getDate(4));
    month_field.setSelectedItem(rs.getDate(4));
    day_field.setSelectedItem(rs.getDate(4));
    

    如果数据库中的数据是Date,那么你需要先访问Date

    Date date = rs.getDate(4);
    

    现在Date 类中的大多数方法都已弃用,因此您并不想使用该类。相反,您可以使用Calendar:

    Calendar calendar = Calendar.getInstance();
    calendar.setTime( date );
    

    现在您可以从日历中单独访问日、月和年:

    int day = calendar.get( Calendar.DATE );
    day_field.setSelectedIndex( day );
    

    请注意,您可能需要使用 (day - 1),我不记得这一天是否从零开始。

    对月份和年份执行相同的操作。对于年份,您需要将年份转换为字符串,以便您可以使用 setSelectedItem(...) 方法,因为您的组合框模型中不会有 2000 年。

    【讨论】:

      猜你喜欢
      • 2012-08-16
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      相关资源
      最近更新 更多