无法解析java.lang.String强制转换为java.lang.Boolean

问题描述 投票:-1回答:2

我还是编程新手。目前,我有一个检查员工出勤情况的程序。员工ID和姓名是从数据库中检索的。雇员的日常出勤被保存在数据库的出勤表中,其中字段仅具有ID,empID,dateAttended,“现在”,“加班”。现在,我想从出勤表中检索所有值。最初,我可以很好地检索这些值,但是在添加“ a.dateAttended”和“ a.Present”之后,出现了此异常。关于如何解决此问题的任何建议?

private void attendanceView(){
    try{
        String query ="SELECT e.ID,e.firstName,e.lastName,e.position,a.dateAttended,a.Present FROM employees e INNER JOIN attendance a ON e.ID=a.empID";
        Object[][] result = connectToDB(query);

        attendanceTable.setModel(new javax.swing.table.DefaultTableModel(
            result, new String [] {"Employee ID","First Name","Last Name", "Position", "Date", "Present"}
        ) 
        {
            Class[] types = new Class [] {
                java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Boolean.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, true
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {

                return canEdit [columnIndex];
            }
        });   
        }catch (ClassNotFoundException ex) {
            Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
        } 
}
java sql database ms-access jtable
2个回答
0
投票

由此,在注释中,

SELECT e.ID,e.firstName,e.lastName,e.position,a.dateAttended 
FROM employees e INNER JOIN Attendance a ON a.empID =e.ID 
WHERE a.dateAttended = (month of the system date)

Google对ms访问日期功能的搜索使我进入了now(),它返回当前日期和时间,而month(),它返回月份号。这意味着您可以执行此操作:

SELECT e.ID,e.firstName,e.lastName,e.position,a.dateAttended 
FROM employees e INNER JOIN Attendance a ON a.empID =e.ID 
WHERE month(a.dateAttended) = month(now())

但是,有更好的方法可以做到这一点。在where子句中使用函数会减慢生产速度。另外,这仅对当前月份有利。我建议您使用Java代码生成两个日期变量。第一个是您要搜索的月份的第一天,另一个是下个月的第一天。那么您的where子句就是这个

where a.dateAttended >= the first variable
and a.datAttended < the other variable

如果访问支持,使用查询参数将进一步改善它。我不使用它,所以我不知道。

© www.soinside.com 2019 - 2024. All rights reserved.