Java,SQLSERVER语法

时间:2013-10-27 19:18:14

标签: java sql-server

这是我运行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

1 个答案:

答案 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();