Необходимо сделать выборку по БД MSSQL вида select pathstr from edo_file where id in (?)
где ? это массив ID требуемых записей.
В ПО один из классов возвращает мне обычный массив типа Long[], например
idArray = new Long[] {1003215L,100358L,100456L};
По ним то и надо найти значение «pathstr»
Кусок кода:
Long[] idArray = new Long[] {1003215L,100358L,100456L};
String sql = "select pathstr from edo_file where id in (?)";
java.sql.Array idArraySql = con.createArrayOf("NUMERIC",idArray);
PreparedStatement ps = con.prepareStatement(sql);
ps.setArray(1,idArraySql);
ResultSet rs = ps.executeQuery();
Ловлю исключение на методе con.createArrayOf
java.sql.SQLFeatureNotSupportedException: This operation is not supported
Декомпиляция класса
SQLServerConnection библиотеки jdbc5 от Microsoft показала следующее:
public Array createArrayOf(String var1, Object[] var2) throws SQLException {
DriverJDBCVersion.checkSupportsJDBC4();
throw new SQLFeatureNotSupportedException(SQLServerException.getErrString("R_notSupported"));
}
Кто сталкивался с такой задачей? Есть ли способы вставить массив в
PreparedStatment без элементов быдлокодирования типа
StringBuilder sb = new StringBuilder();
for(int i=0;i<idArray.length;i++){
sb.append("'");
sb.append(idArray[i]);
sb.append("'");
if (i<idArray.length-1){
sb.append(",");
}
}
sql=sql.replace("?",sb.toString());