【问题标题】:Error in the "FROM CLAUSE"“从条款”中的错误
【发布时间】:2014-05-09 15:50:33
【问题描述】:

我在下面有这个查询。我已经在 ms 访问中检查了它,它工作正常。但是当我将它添加到我的程序时,“FROM 子句中的语法错误”。出现。有关如何解决此问题的任何建议?

String query ="TRANSFORM COUNT(a.present)\n" +
                            "SELECT e.ID,e.firstName,e.lastName,e.position,e.rate\n" +
                            "FROM employees e \n" +
                            "INNER JOIN attendance a \n" +
                            "ON e.ID = a.empID \n" +
                            "GROUP BY e.ID,e.firstName,e.lastName,e.position,e.rate \n" +
                            "PIVOT a.dateAttended";

这是查询所属的完整方法。 connectToDB 方法用于将结果集插入到 jtable 中。 jtables 是否能够插入数据透视查询?

private void attendanceView() throws ClassNotFoundException{
        try{
            String query ="TRANSFORM COUNT(a.present) " +
                          "SELECT e.ID,e.firstName,e.lastName,e.position,e.rate " +
                          "FROM employees e " +
                          "INNER JOIN attendance a " +
                          "ON e.ID = a.empID " +
                          "GROUP BY e.ID,e.firstName,e.lastName,e.position,e.rate " +
                          "PIVOT a.dateAttended";
            Object[][] result = connectToDB(query);
            System.out.print(result);
            monthlyAttendanceTable.setModel(new javax.swing.table.DefaultTableModel(
                    result, new String [] {"Employee ID","First Name","Last Name", "Position", "Rate","",""}
            )
            {
                Class[] types = new Class [] {
                    java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Integer.class,java.lang.Integer.class,java.lang.Integer.class,java.lang.String.class
                };
                boolean[] canEdit = new boolean [] {
                    false, false, false, false, false, false, false, false, false,false
                };

                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);
                ex.printStackTrace();
            } 
    }

【问题讨论】:

  • @Reimeus:\n不也算空格吗?
  • 我在查询字符串中添加了一个新行,以便于我的代码的可读性。我会试试你的建议。
  • 我不知道 ms-access,但也许它需要 windows 换行符 (\r\n)? Java 仅将\n 视为 LF 字符;它从不将其扩展到操作系统的换行符概念。
  • 我试过这个,但同样的错误发生了。 String query ="TRANSFORM COUNT(a.present) SELECT e.ID,e.firstName,e.lastName,e.position,e.rate FROM employees e INNER JOIN Attendance a ON e.ID = a.empID GROUP BY e. ID,e.firstName,e.lastName,e.position,e.rate PIVOT a.dateAttended";
  • 我在嵌入 java 的 SQL 中也使用换行符。我认为它非常适合调试。

标签: java sql ms-access select


【解决方案1】:

试试这个:

将同一个查询拆分成多行时,空格很重要。

String query ="TRANSFORM COUNT(a.present) " +
                            "SELECT e.ID,e.firstName,e.lastName,e.position,e.rate " +
                            "FROM employees e " +
                            "INNER JOIN attendance a " +
                            "ON e.ID = a.empID " +
                            "GROUP BY e.ID,e.firstName,e.lastName,e.position,e.rate " +
                            "PIVOT a.dateAttended";

【讨论】:

猜你喜欢
  • 2017-04-15
  • 2011-10-06
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-23
  • 2020-09-22
  • 1970-01-01
相关资源
最近更新 更多