2017-07-12 7 views
1

私はこのエラーが発生していますか? 私は何をしようとしていますか?行うにはあなたがIntegerないStringとしてワイルドカードの場所を指定する必要があり、このPreparedStatement型のメソッドsetArray(int、Array)は、引数(String、String [])には適用されません。

statement.setArray(1, array); 

を試してみて、アレイ

 public List<DeviceDetail> list(String[] deviceIds) throws Exception { 
     List<DeviceDetail> appList = new ArrayList<>(); 
     Connection conn =null; 
     CallableStatement statement = conn.prepareCall("{call 
     Application_List(?)}"); 
     statement.setArray("Deviceid",deviceIds); 
     boolean isResultSet = statement.execute(); 
     if (isResultSet) { 
      try (ResultSet rs = statement.getResultSet()) { 
        while (rs.next()) { 
         DeviceDetail dd = new DeviceDetail(); 
         dd.setDeviceId(rs.getString("DeviceId")); 
         dd.setToken(rs.getString("Token")); 
         dd.setDeviceType(rs.getString("DeviceType")); 
         dd.setCreatedBy(rs.getString("CreatedBy")); 
         dd.setCreatedTime(rs.getTimestamp("CreatedTime")); 
         dd.setStatus(rs.getBoolean("Status")); 
         appList.add(dd); 
        } 
       } 
      } 
     return appList; 
} 
+0

https://docs.oracle.com/javase/8/docs/api/java/sql/PreparedStatement.html#setArray-int-java.sql.Array-とhttps://docs.oracle .com/javase/8/docs/api/java/sql/Array.html本当に必要なのでしょうか? 'Application_List'はどうなっていますか?申し訳ありません。 –

答えて

1

になりますです。

編集

法の下に使用してjava.sql.Arrayを作成します。

Array array = conn.createArrayOf("VARCHAR", deviceIds); 
+0

私は答えを編集しました。見てみましょう。 – ELITE

+0

そのおかげで、助けてくれてありがとう それはどういう意味ですか? public List list(String [] deviceIds)throws Exception {List appList = new ArrayList <>(); 接続conn = null; conn = dataSource.getConnection(); 配列array = conn.createArrayOf( "VARCHAR"、deviceIds); CallableStatement文= conn.prepareCall( "{DeviceDetail_List(?)}");statement.setArray(2、array); –

+0

'statement.setArray(1、array);'ここで1は渡されるパラメータのインデックスです。 – ELITE

関連する問題