在准备好的语句中使用ORDER BY

时间:2015-10-07 14:07:25

标签: java mysql spring-mvc

我创建了一个使用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

2 个答案:

答案 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