有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mysql对sql结果进行排序,并在java中通过循环在表中显示所有结果

我希望使用从jDateChooser获得的日期对sql结果进行排序,并显示所有返回的结果。这就是我到目前为止所做的。到目前为止,即使我循环了排序后的sql结果,我也只能得到1个结果

public void MonthlyTotalExpenses_Report(){
    String typeOfReport = (String) report_type.getSelectedItem();
    String reportDate = ((JTextField)report_date.getDateEditor().getUiComponent()).getText();

    db databaseCon = new db();
    Connection dbconnect = db.dbconnect();

    if(typeOfReport == "Total expenses"){
        String selectQuery = "select name,type,sum(amount),date_payed from expenses order by ? DESC";

        try{
            Connection con = databaseCon.dbconnect();
            ResultSet rs = null;
            PreparedStatement pst = null;
            pst = con.prepareStatement(selectQuery);
            pst.setString(1,reportDate);
            rs = pst.executeQuery();

            List<String> results = new ArrayList<String>();
            while(rs.next()) {
                results.add(rs.getString(1));
            }
            for(String result : results) {
                System.out.println(result);
            }


        }catch (Exception e){
            JOptionPane.showMessageDialog(null, e);
        }
    }

}

我希望像这样对结果进行排序(例如->;2017-01-01到用户使用jDateChooser选择的日期),并打印该期间内可用的所有记录。我只是觉得我写的sql查询是错误的。它只打印数据库中名称列的第一个值。请帮助我找出如何根据上面提到的内容进行排序,并打印返回的所有结果


共 (1) 个答案

  1. # 1 楼答案

    您可能希望在查询中的where条件中设置日期

    select name,type,sum(amount),date_payed from expenses where date_payed = ? order by 4 DESC
    

    考虑从字符串中获取日期。

    String reportDate = ((JTextField)report_date.getDateEditor().getUiComponent()).getText(); // "2017-01-01"
    DateFormat format = new SimpleDateFormat("YYYY-MM-DD", Locale.ENGLISH);
    Date date = format.parse(reportDate);
    

    然后让你的情人

    pst.setDate(1,reportDate);