#java #mysql #image #swing
#java #mysql #изображение #swing
Вопрос:
Как сохранить и загрузить изображение из базы данных и отобразить его на Java? Я могу получить местоположение файла, но я не уверен, как сохранить его как большой двоичный объект в базе данных или отобразить изображение в окне swing. Я использую a PreparedStatement
для получения информации в базе данных и из нее.
Комментарии:
1. Вы уверены, что сохранение изображения в вашей базе данных MySQL — хорошая идея? Изображения, как правило, большие, а базы данных SQL не являются отличным способом хранения неструктурированных больших двоичных объектов данных.
2. В системе всего небольшое количество пользователей, поэтому я думаю, что это было бы уместно.
Ответ №1:
Смотрите Это руководство по MySQL Java для примеров в разделах Запись изображений и чтение изображений. В общих чертах,
// writing
String sql = "INSERT INTO Images(Data) VALUES(?)";
PreparedStatement pst = con.prepareStatement(sql);
FileInputStream fin = new FileInputStream(myFile);
pst.setBinaryStream(1, fin, (int) myFile.length());
pst.executeUpdate();
//reading
String query = "SELECT Data FROM Images LIMIT 1";
PreparedStatement pst = con.prepareStatement(query);
ResultSet result = pst.executeQuery();
result.next();
String fileName = "src/main/resources/tree.png";
FileOutputStream fos = new FileOutputStream(fileName);
Blob blob = result.getBlob("Data");
int len = (int) blob.length();
byte[] buf = blob.getBytes(1, len);
fos.write(buf, 0, len);