Это неправильно:
preparedStatment.setBytes(10, inpStream.toString().getBytes());
Вы сохраняете результат InputStream#toString()
в байтах в БД. InputStream#toString()
не возвращает содержимое файла, как вы, кажется, думаете, вместо этого он возвращает представление по умолчанию [email protected]
, унаследованное от Object#toString()
.
Вам нужно PreparedStatement#setBinaryStream()
вместо:
preparedStatement.setBinaryStream(10, inpStream);
Тогда вы можете получить его ResultSet#getBinaryStream()
:
InputStream inpStream = resultSet.getBinaryStream("columnname");
Или, если вы действительно потребность PreparedStatement#setBytes()
, то вам нужно будет написать InputStream
к ByteArrayOutputStream
обычным способом, а затем получить байты по методу toByteArray()
. Но само по себе это не проблема памяти.
Байт, полученный вами из базы данных *, - это * содержимое файла. Или мне что-то не хватает? –
Точно, это файл изображения или PDF-документа или что-то в этом роде? Или вы пытаетесь прочитать текст? – Pace