Można to zrobić na kilka sposobów, ale PreparedStatement.setBinaryStream
jest prawdopodobnie najlepszym sposobem.
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();
}
(Zauważ, że dla uproszczenia nie zawarłem żadnych niezbędnych elementów try/catch do zamknięcia Connection
, PreparedStatement
i InputStream
, ale musisz to zrobić.)
W ten sposób dane będą przesyłane strumieniowo z pliku do bazy danych bez konieczności ich jednoczesnego ładowania do pamięci.