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