我想使用从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);
}
}
}
我希望对结果进行排序(例如 - &gt; 2017-01-01到用户使用jDateChooser选择的日期)并打印该期间内的所有可用记录。我只是想到我写的sql查询是错误的。它只打印数据库中name列的第一个值。帮助我弄清楚如何根据我上面提到的内容进行排序并打印返回的所有结果。
答案 0 :(得分: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);