在下面给出的这两个查询中,第一个查询成功运行并显示结果,但在运行第二个查询时,我没有输出,也没有错误。
所以请解释为什么我没有在第二次查询中获得输出。
String firstdate="2014-11-01";
String lastdate="2014-11-30";
//1 query
getschedule=con.getreader_schedule("SELECT startTime,endtime,available,comments FROM
reader_available_time WHERE startTime BETWEEN '2014-11-01' AND '2014-11-30' AND
reader_id="+Integer.parseInt("136"));
//2 query
getschedule=con.getreader_schedule("SELECT startTime,endtime,available,comments FROM
reader_available_time WHERE startTime BETWEEN "+firstdate+" AND "+lastdate+" AND
reader_id="+Integer.parseInt("136"));
答案 0 :(得分:1)
当你进行第二次查询并给出外部参数时,你需要做这样的事情。
getschedule=con.getreader_schedule("SELECT startTime,endtime,available,comments FROM
reader_available_time WHERE startTime BETWEEN '"+firstdate+"' AND '"+lastdate+"' AND
reader_id="+Integer.parseInt("136"));
我认为它应该起作用。
答案 1 :(得分:1)
理想情况下,您应该在查询中使用预备语句,以避免此类问题。有关预准备语句的教程(使用java),请检查here
要解决现有查询,
您没有在第二个查询中获得输出,因为在替换变量时,您的查询将是:
WHERE STARTTIME BETWEEN 2014-11-01 AND 2014-11-30
这是错误的并且必然会抛出异常。 正确的查询应该是
WHERE STARTTIME BETWEEN '2014-11-01' AND '2014-11-30'
这意味着,您应该将文本更改为
WHERE STARTTIME BETWEEN '"+firstdate+"' AND '"+lastdate+"'