MySQL db中的查询工作正常。我在JDBC应用程序中有这个查询。而且我得到一些编译时错误 我的输入对象是 s1 和 s2 ,其中 s1包含1月, s2包含2013 。两种数据类型都是VARCHAR。我在引号方面遇到问题。 请提出一些修正建议。
String QueryString = "SELECT reading,totalcost,paiddate,receiptnumber
FROM userseven WHERE (readingmonth = '"+s1+"' AND readingyear='"+s2+"'");
答案 0 :(得分:2)
出于此目的,您最好使用PreparedStatement
。所以你的查询将如下所示:
String QueryString = "SELECT reading,totalcost,paiddate,receiptnumber FROM userseven WHERE
readingmonth = ? AND readingyear= ?;
然后从PreparedStatement
对象创建connection
,如下所示:
PreparedStatement stmt = conn.prepareStatement(QueryString);
然后像这样设置该语句的参数:
stmt.setString(1, s1);
stmt.setString(2, s2);
此类修改将使您免于潜在的SQL注入,并简化构建复杂查询的过程