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 に答える