Hay varias formas de hacerlo, pero PreparedStatement.setBinaryStream
es probablemente la mejor manera.
public void saveFileToDatabase(File file) {
InputStream inputStream = new FileInputStream(file);
Connection conn = ...;
PreparedStatement pS = conn.prepareStatement(...);
...
pS.setBinaryStream(index, inputStream, (int) file.length());
...
pS.executeUpdate();
}
(Tenga en cuenta que, por simplicidad, no incluí ninguna de las cosas necesarias para intentar/atrapar para cerrar la Connection
, PreparedStatement
y InputStream
, pero tendría que hacer eso).
Hecho de esta manera, los datos se transmitirán desde el archivo a la base de datos sin tener que cargarlos en la memoria todos a la vez.