这是我运行Java类时生成的代码,页面正确显示信息,但日志文件中有错误。
java.sql.SQLException:[FMWGEN] [SQLServer JDBC驱动程序] [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
答案 0 :(得分: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();