Có một số cách bạn có thể thực hiện việc này, nhưng PreparedStatement.setBinaryStream
có lẽ là cách tốt nhất.
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();
}
(Lưu ý rằng để đơn giản, tôi đã không bao gồm bất kỳ công cụ try / catch cần thiết nào để đóng Connection
, PreparedStatement
và InputStream
, nhưng bạn cần phải làm điều đó.)
Thực hiện theo cách này, dữ liệu sẽ được truyền trực tuyến từ tệp vào cơ sở dữ liệu mà không cần phải tải tất cả vào bộ nhớ cùng một lúc.