Задать вопрос
@Delwin

Sql.Array в mssql jdbc4 java.sql.SQLFeatureNotSupportedException: This operation is not supported Баг?

Необходимо сделать выборку по БД 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());
  • Вопрос задан
  • 721 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы