我遇到了jdatechooser的问题,而我曾经通过jdatechooser搜索列之间的数据。问题是当我搜索数据时,它显示正确的数据,但它也显示了我不想要的数据。以下是我的错误消息图片。
你可以看到我想在11月11日到7月7日期间搜索数据,但它也显示了最后两笔交易。 以下是我的代码
private void okActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try
{
String sql="select * from Bill_Ledger where Date >=(?) and Date <=(?)";
pst=conn.prepareStatement(sql);
pst.setString(1,((JTextField)fromdate.getDateEditor().getUiComponent()).getText());
pst.setString(2,((JTextField)todate.getDateEditor().getUiComponent()).getText());
rs=pst.executeQuery();
medic_table.setModel(DbUtils.resultSetToTableModel(rs));
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,e);
}
finally
{
try
{
pst.close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,e);
}
}
}
请帮帮我。
答案 0 :(得分:0)
如果我是你,我会做的是首先在控制台上打印出你要放入SQL的日期字符串,如下所示:
System.out.println("From date: "+pst.setString(1,((JTextField)fromdate.getDateEditor().getUiComponent()).getText()));
System.out.println("To date: "+pst.setString(2,((JTextField)todate.getDateEditor().getUiComponent()).getText());
以后,我会尝试在外部工具(如mysql workbench或简单的CLI)中手动执行给定的sql,并检查我是否得到了所需的结果。
select * from Bill_Ledger where Date >=fromDate and Date <=toDate
我现在最好的选择是,日期字符串格式不正确(在数据库术语中)。这有点难找,因为mysql不会抱怨糟糕的日期格式。
查询的正确格式应与'yyyy-MM-dd'