2017-07-12 1 views
1

Jungs, die ich bin neu in Java ich diese Störung erhalte mir bitte helfen , was ich versuche, zu tun ist,Verfahren setArray (int, Array) in der Art PreparedStatement ist nicht anwendbar für die Argumente (String, String [])

in Array Ergebnis erhalten
 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- und https://docs.oracle com/javase/8/docs/api/java/sql/Array.html Sind Sie sicher, dass Sie das brauchen? Wie sieht 'Application_List' aus? –

Antwort

1

Versuchen Sie, diese

statement.setArray(1, array); 

Sie benötigen Wildcard Ort als Integer nicht String angeben.

bearbeiten

erstellen java.sql.Array unter Methode.

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

Entschuldigung dafür. Ich habe gerade die Antwort bearbeitet. Guck mal. – ELITE

+0

ist es ok danke für die Hilfe meinst du damit ...? öffentliche Liste -Liste (String [] deviceIds) löst Exception {List appList = new ArrayList <>(); Verbindung conn = null; conn = dataSource.getConnection(); Array Array = conn.createArrayOf ("VARCHAR", Geräte-IDs); CallableStatement-Anweisung = conn.prepareCall ("{DeviceDetail_List (?)} Aufrufen"); Anweisung.setArray (2, Array); –

+0

'statement.setArray (1, Array);' hier 1 ist der Index des zu übergebenden Parameters. – ELITE

Verwandte Themen