我创建了一个使用Java MVC使用数据库中的数据显示表的Web应用程序。
我有一个准备好的声明,我正在使用它来生成可以正常工作的表,直到我尝试使用ORDER BY。
我很困惑,因为当我在mySQL工作台中运行此查询时,它运行正常:
SELECT * FROM appointments ORDER BY date
然而,当我将它放入浏览器中的预准备语句时,它会返回一个无序列表。
public void doRead(){
String query = "SELECT * FROM appointments ORDER BY date";
try {
PreparedStatement ps = this.connection.prepareStatement(query);
this.results = ps.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
感谢任何帮助。
按要求我在这里使用此方法打印表格:
try {
while(this.results.next()){
Appointment appointment = new Appointment();
appointment.setAppointmentID(this.results.getInt("appointment_id"));
appointment.setDescription(this.results.getString("description"));
appointment.setDate(this.results.getString("date"));
table += "<tr>";
table += "<td>";
table += appointment.getDescription();
table += "</td>";
table += "<td>";
table += appointment.getDate();
table += "</td>";
table += "</tr>";
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
table += "</table>";
return table;
}
浏览器中的输出:
牙医2015-09-17
牙医2015-09-17
牙医2015-09-17
牙医2015-10-09
Dentist 2015-09-03
Dentist 2015-09-03
Dentist 2015-09-03
答案 0 :(得分:1)
DATE是reserved word。使用反引号:
String query = "SELECT * FROM appointments ORDER BY `date`";
最好使results
成为局部变量并关闭它。
提示:
对table
使用StringBuilder而不是String。更快,更少的内存饥饿。甚至更好的是传递PrintWriter进行输出。
答案 1 :(得分:0)
尝试添加排序顺序&#34; ASC&#34;:
SELECT * FROM appointments ORDER BY date ASC