【发布时间】: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 中也使用换行符。我认为它非常适合调试。