Il existe plusieurs façons de procéder, mais PreparedStatement.setBinaryStream
est probablement le meilleur moyen.
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();
}
(Notez que pour plus de simplicité, je n'ai inclus aucun des trucs try/catch nécessaires pour fermer la Connection
, PreparedStatement
et InputStream
, mais vous auriez besoin de le faire.)
De cette manière, les données seront transmises du fichier à la base de données sans avoir à être chargées en mémoire en une seule fois.