Отображение содержимого больших двоичных объектов из DB2 на AS400

#java #ibm-midrange #db2-400

#java #ibm — средний уровень #db2-400

Вопрос:

Я написал небольшое java-приложение на клиенте, которое вставляет изображение в виде большого двоичного объекта в таблицу на IBM i. Когда я запрашиваю таблицу, я вижу, что столбец заполнен. Как отобразить данные больших двоичных объектов в виде изображения, чтобы подтвердить правильность записи данных?

В приложении Java я записываю изображение в папку Windows 7 в виде файла PNG, который, как я подтвердил, можно просмотреть с помощью Window Photo Viewer. Затем я вставляю то же изображение в свою таблицу на IBM i версии 7R3.

 Blob blob = conn.createBlob();
try {
    os = new ByteArrayOutputStream();

    ObjectOutputStream oos;
    oos = new ObjectOutputStream(blob.setBinaryStream(1));
    oos.writeObject(outputfile);
    oos.close();

    // Write the image as a BLOB to prfruncap
    queryStr = "INSERT INTO prfdta.prfruncap (rcrun, rcseq, rcimage)"
                   " VALUES(?,?,?)";
    pstmt1 = conn.prepareStatement(queryStr);
    pstmt1.setInt(1,run);
    pstmt1.setInt(2, sequence);
    pstmt1.setBlob(3, blob);
    pstmt1.executeUpdate();

    } catch (SQLException seRs) {
        seRs.printStackTrace();
        throw seRs; 
    } catch (IOException e) {
    e.printStackTrace();
}
  

Когда я запрашиваю данные, я вижу, что столбец действительно содержит данные. Я надеялся, что смогу вставить данные в онлайн-конвертер, такой как (https://codebeautify.org/base64-to-image-converter ) но я не могу заставить изображение отображаться.
Могу ли я просмотреть данные больших двоичных объектов в виде изображения, чтобы убедиться, что они записываются правильно?

Ответ №1:

Вы не сохраняете изображение как base64, вы сохраняете его как двоичный файл, поэтому конвертер base64 в изображение не поможет.

Запишите байты обратно в потоковый файл на ПК или даже в IFS и откройте его с помощью программы просмотра фотографий.