1. Создайте таблицу:
Скопируйте код кода следующим образом:
удалить таблицу, если существует фотография;
СОЗДАТЬ ТАБЛИЦУ фото (
id INT NOT NULL AUTO_INCREMENT ПЕРВИЧНЫЙ КЛЮЧ,
имя VARCHAR(100) КОММЕНТАРИЙ 'имя',
фото-капля КОММЕНТАРИЙ 'фото'
)
ДВИГАТЕЛЬ=InnoDB
НАБОР КОДОВ ПО УМОЛЧАНИЮ = utf8
COLLATE = utf8_general_ci;
Формат хранения данных изображений в MySql — тип blob. Blob — это контейнер, в котором можно хранить двоичные файлы;
2. Напишите класс инструмента для доступа к данным потока изображений:
Скопируйте код кода следующим образом:
импортировать java.io.File;
импортировать java.io.FileInputStream;
импортировать java.io.FileNotFoundException;
импортировать java.io.FileOutputStream;
импортировать java.io.IOException;
импортировать java.io.InputStream;
общественный класс ImageUtil {
частный статический файл file = null;
/**
* Чтение двоичного потока изображения из локального файла.
*
* @param файл
* @возвращаться
*/
public static FileInputStream getImageByte (String infile) {
FileInputStream imageByte = null;
файл = новый файл (infile);
пытаться {
imageByte = новый FileInputStream (файл);
} catch (FileNotFoundException e) {
е.printStackTrace();
}
вернуть изображениеByte;
}
/**
* Прочитайте поток изображений как картинку
*
* @param inputStream
* @param путь
*/
public static void readBlob (InputStream inputStream, String path) {
пытаться {
FileOutputStream fileOutputStream = новый FileOutputStream (путь);
буфер байт[] = новый байт[1024];
интервал лен = 0;
while ((len = inputStream.read(buffer)) != -1) {
fileOutputStream.write(буфер, 0, длина);
}
inputStream.close();
fileOutputStream.close();
} catch (FileNotFoundException e) {
е.printStackTrace();
} catch (IOException e) {
е.printStackTrace();
}
}
}
3. Сохраните локальные файлы в базу данных.
Вам необходимо добавить драйвер базы данных MySql --mysql-connector-java-5.1.24-bin.jar.
Скопируйте код кода следующим образом:
импортировать java.io.IOException;
импортировать java.io.InputStream;
импортировать java.sql.Connection;
импортировать java.sql.DriverManager;
импортировать java.sql.PreparedStatement;
импортировать java.sql.SQLException;
общественный класс ImageInsert {
public static void main(String[] args) {
пытаться {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException e) {
е.printStackTrace();
} catch (IllegalAccessException e) {
е.printStackTrace();
} catch (ClassNotFoundException e) {
е.printStackTrace();
}
Строка пользователя = «корень»;
Строковый пароль = «корень»;
Строка URL = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
Соединение соединение = ноль;
пытаться {
соединение = DriverManager.getConnection(url, пользователь, пароль);
} catch (SQLException e) {
е.printStackTrace();
}
ReadedStatement подготовленныйStatement = null;
Входной поток inputStream = ноль;
inputStream = ImageUtil.getImageByte("D://temp//photo1.png");
пытаться {
String sql = "вставить в значения photo(id,name,photo)(?,?,?)";
подготовленныйStatement = Connection.prepareStatement(sql);
подготовленныйStatement.setInt(1, 1);
подготовленныйStatement.setString(2, "Джулия");
подготовленныйStatement.setBinaryStream(3, inputStream,
inputStream.available());
подготовленныйStatement.execute();
} catch (SQLException e) {
е.printStackTrace();
} catch (IOException e) {
е.printStackTrace();
} окончательно {
пытаться {
если (входной поток! = ноль)
inputStream.close();
} catch (IOException e) {
е.printStackTrace();
} окончательно {
пытаться {
если (preparedStatement != ноль)
подготовленноеStatement.close();
} catch (SQLException e) {
е.printStackTrace();
} окончательно {
пытаться {
соединение.закрыть();
} catch (SQLException e) {
е.printStackTrace();
}
}
}
}
}
}
4. Чтение и создание изображений из базы данных.
Скопируйте код кода следующим образом:
импортировать java.io.IOException;
импортировать java.io.InputStream;
импортировать java.sql.Connection;
импортировать java.sql.DriverManager;
импортировать java.sql.ResultSet;
импортировать java.sql.SQLException;
импортировать java.sql.Statement;
общественный класс ImageGet {
public static void main(String[] args) {
пытаться {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException e) {
е.printStackTrace();
} catch (IllegalAccessException e) {
е.printStackTrace();
} catch (ClassNotFoundException e) {
е.printStackTrace();
}
Строка пользователя = «корень»;
Строковый пароль = «корень»;
Строка URL = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
Соединение соединение = ноль;
пытаться {
соединение = DriverManager.getConnection(url, пользователь, пароль);
} catch (SQLException e) {
е.printStackTrace();
}
Оператор заявления = ноль;
ResultSet resultSet = null;
Входной поток inputStream = ноль;
пытаться {
оператор = Connection.createStatement();
String sql = "выбрать p.photo из фотографии p, где id = 1";
resultSet = оператор.executeQuery(sql);
resultSet.next();
inputStream = resultSet.getBinaryStream("фото");
ImageUtil.readBlob(inputStream, "D://temp//photo2.png");
} catch (SQLException e) {
е.printStackTrace();
} окончательно {
пытаться {
если (входной поток! = ноль)
inputStream.close();
} catch (IOException e) {
е.printStackTrace();
} окончательно {
пытаться {
если (ResultSet! = ноль)
resultSet.close();
} catch (SQLException e) {
е.printStackTrace();
} окончательно {
если (оператор != ноль)
если (оператор != ноль)
пытаться {
заявление.закрыть();
} catch (SQLException e) {
е.printStackTrace();
} окончательно {
если (соединение! = ноль)
пытаться {
соединение.закрыть();
} catch (SQLException e) {
е.printStackTrace();
}
}
}
}
}
}
}
5. Кончено!