2010-11-25 3 views
1

私はSQLを実行して結果を取得するためにSpring-JDBCを使用しています。PreparedStatement - すべてのパラメータを束縛していません

SELECT 
     SUM(spend) total_sum 
    FROM TABLE_NAME 
     WHERE 
     sup_id = ? AND  
     ((YEAR = ? AND period IN (?)) OR  
     (YEAR = ? AND period IN(?))) 

、バインド変数として渡されます。

final Object[] paramMap = { "1234", "2010", 
       "'01_JAN','02_FEB','03_MAR'", "2009", "'11_NOV','12_DEC'" }; 

final List<LeadTimeDto> query = getJdbcTemplate().query(sql, paramMap, 
       new RowMapper<LeadTimeDto>() { 
        @Override 
        public LeadTimeDto mapRow(final ResultSet resultSet, 
          final int arg1) throws SQLException { 
         final LeadTimeDto leadTimeDto = new LeadTimeDto(); 
         final String string = resultSet.getString("total_sum"); 
         System.out.println("ltime = " + string); 
         leadTimeDto.setLeadTime(string); 
         return leadTimeDto; 
        } 
       }); 

は、私はここで何が起こっているのかわかりません。私はTHIRDパラメータのバインディングに問題があります。 3番目のパラメータの値をクエリ自体に書き込むと、以下のように動作します。

​​

引用符( ')に問題がある場合は、FIFTH paramも問題であったはずです。しかし、それは結構です。

私はマップとビーンの両方でgetNamedParameterJdbcTemplate()を使用してみましたが、運はありませんでした。

+0

: いくつかの選択肢を説明し、次の資料を参照してください? –

+0

例外がありますか?はいの場合はpls –

+0

エラーはありません。レコードがフェッチされないということだけです。 – HanuAthena

答えて

2

IN節にprepared statementパラメータを使用することは、私が知る限り合法ではありません。あなたが取得しているどのようなエラー

http://www.javaranch.com/journal/200510/Journal200510.jsp#a2

+0

@Schneider:ありがとうございます:)それは働いた。一人ではないようです:http://stackoverflow.com/questions/178479/alternatives-for-java-sql-preparedstatement-in-clause-issue – HanuAthena

関連する問題