1

这是我运行 Java 类时生成的代码,页面正确显示信息,但日志文件中有错误。

java.sql.SQLException:[FMWGEN][SQLServer JDBC Driver][SQLServer]')' 附近的语法不正确。

Java Code:

  sql2 = " SELECT COUNT(*)  CNT FROM ( SELECT UPPER(SOURCECODE)  as SRCCODE
           FROM  T1 WHERE  (PRODUCTTYPE LIKE '%card%') 
           AND ORDER_DATE BETWEEN CONVERT(DATETIME,'"+ddet.getStartDate()+"') AND   
           CONVERT(DATETIME,'"+ddet.getEndDate()+"')   
           AND (UPPER(SOURCECODE) IS NOT NULL)  GROUP BY            
           UPPER(SOURCECODE)) AS T";
SQL Generated:
  SELECT COUNT(*)  CNT FROM ( 
  SELECT UPPER(SOURCECODE)  as SRCCODE FROM T1 WHERE 
  (PRODUCTTYPE LIKE '%card%') AND 
   ORDER_DATE BETWEEN   CONVERT(DATETIME,'12/01/2012') AND CONVERT(DATETIME,'10/27/2013')
   AND (UPPER(SOURCECODE) IS NOT NULL) 
GROUP BY  UPPER(SOURCECODE)
) AS T
4

1 回答 1

0

将您的查询转换为使用预先准备好的语句

Connection cnx = DriverManager.getConnection(sql_auth,login,password); 


sql2 = " SELECT COUNT(*)  CNT FROM ( SELECT UPPER(SOURCECODE)  as SRCCODE
       FROM  T1 WHERE  (PRODUCTTYPE LIKE '%card%') 
       AND ORDER_DATE BETWEEN CONVERT(DATETIME,?) AND   
       CONVERT(DATETIME,?)   
       AND (UPPER(SOURCECODE) IS NOT NULL)  GROUP BY            
       UPPER(SOURCECODE)) AS T";

PreparedStatement ps = cnx.prepareStatement(sql2);

ps.setDate(1, ddet.getStartDate());
ps.setDate(2, ddet.getEndDate());

如果需要,请检查查询的 toString

 ps.toString();

执行您的查询

     ResultSet rs = ps.executeQuery();
于 2015-05-30T11:53:49.377 回答