簡體   English   中英

在准備好的語句中使用ORDER BY

[英]using ORDER BY in a prepared statement

我正在創建一個Web應用程序,該應用程序使用Java MVC使用數據庫中的數據顯示表。

我有一個准備好的語句,可以用來生成在我嘗試使用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

牙醫2015-09-03

牙醫2015-09-03

牙醫2015-09-03

DATE是保留字 使用反引號:

String query = "SELECT * FROM appointments ORDER BY `date`";

還可以更好地使results成為局部變量並將其關閉。

小費:

table使用StringBuilder而不是String。 更快,更少的內存消耗。 甚至最好是傳遞一個PrintWriter進行輸出。

嘗試添加排序順序“ ASC”:

SELECT * FROM appointments ORDER BY date ASC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM