在mysql查询中传递String参数时没有输出

时间:2014-11-04 06:09:41

标签: mysql sql

在下面给出的这两个查询中,第一个查询成功运行并显示结果,但在运行第二个查询时,我没有输出,也没有错误。

所以请解释为什么我没有在第二次查询中获得输出。

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"));

2 个答案:

答案 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+"'