当我在一个月内的两个日期之间进行搜索时(例如在02-02-2013
和09-02-2013
之间)
结果显示从03-01-2013
到08-01-2013
和03-02-2013
到08-02-2013
。
以下是我的代码:
try {
dconfig dcf=new dconfig();
java.sql.Connection connection;
Class.forName(dcf.driver);
connection=(com.mysql.jdbc.Connection) DriverManager.getConnection(dcf.StrUrl,dcf.StrUid,dcf.StrPwd);
ResultSet rs = null;
ResultSet rscount;
String StrQr="";
if (jobnamesearch.getText().trim().length()>0 ) {
StrQr=StrQr + " and job_name like '%" + jobnamesearch.getText().trim() +"%' ";
}
if (datetosearch.getText().trim().length()>0) {
StrQr=StrQr + " and date > '" + datesearch.getText().toString()+"' ";
StrQr=StrQr + " and date < '" + datetosearch.getText().toString()+"' ";
}
if (datesearch.getText().trim().length()>0 && datetosearch.getText().trim().length()==0) {
StrQr=StrQr + " and date like '%" + datesearch.getText().trim().toString()+ "%' ";
}
if (dwsearch.getText().trim().length()>0 ) {
StrQr=StrQr + " and dw_no like '%" + dwsearch.getText().trim() + "%' ";
}
if (remsearch.getText().trim().length()>0 ) {
StrQr=StrQr + " and rem_no like '%" + remsearch.getText().trim() + "%' ";
}
if (typesearch.getSelectedItem().toString().length()<11) {
StrQr=StrQr + " and type like '%" + typesearch.getSelectedItem().toString() + "%' ";
}
if (usersearch.getSelectedItem().toString().length()>0) {
StrQr=StrQr + " and user like '%" + usersearch.getSelectedItem().toString() + "%' ";
}
java.sql.PreparedStatement stmt=connection.prepareStatement("SELECT ID,job_name,details,type,dw_no,rem_no,user,date FROM tracker where 1=1 " + StrQr +" order by ID DESC");
java.sql.PreparedStatement stmtcount=connection.prepareStatement("SELECT Count(*) FROM tracker where 1=1 " + StrQr +"");
rs = stmt.executeQuery();
rscount = stmtcount.executeQuery();
}
答案 0 :(得分:0)
如果我不得不猜测,我会说它就在这里:
if (datetosearch.getText().trim().length()>0) {
StrQr=StrQr + " and date > '" + datesearch.getText().toString()+"' ";
StrQr=StrQr + " and date < '" + datetosearch.getText().toString()+"' ";
}
你说日期&gt; - 尝试将其更改为&gt; =和&lt; =。
if (datetosearch.getText().trim().length()>0) {
StrQr=StrQr + " and date >= '" + datesearch.getText().toString()+"' ";
StrQr=StrQr + " and date <= '" + datetosearch.getText().toString()+"' ";
}
此外,如果您的数据库中的日期是日期时间,则&lt; =也将无效。您需要添加一天或附加23:59,因为它将在午夜搜索。
希望这有帮助。
BTW - 这非常容易受到SQL注入攻击。请考虑使用参数化查询。