Blob (двоичный большой объект), большой двоичный объект, представляет собой контейнер, который может хранить двоичные файлы. В компьютерах капли часто являются типом поля, используемого в базах данных для хранения двоичных файлов. Капли - это большой файл. Типичные капли - это изображение или звуковой файл. Из -за их размера они должны быть обработаны особым образом (например: загрузка, загрузка или хранение в базе данных).
1. Основные понятия
В реальной разработке иногда необходимо использовать программы для непосредственного сохранения большого текста или двоичных данных в базе данных для хранения.
Для MySQL есть только капли, но нет полей. MySQL использует текст для хранения большого текста, а текст и капли делятся на:
TinyText, Text, MediumText и Longtext
Tinyblob, Blob, Mediumblob и Longblob
2. Создайте испытательную среду
2.1. Структура тестового проекта построена
Как показано на картинке:
2.2. Записать файл конфигурации DB.Properties
Driver = com.mysql.jdbc.driverurl = jdbc: mysql: // localhost: 3306/jdbcstudyusername = rootpassword = xdp
2.3. Напишите класс инструментов jdbcutils
Пакет me.gacl.utils; импорт java.io.inputstream; import java.sql.connection; импорт java.sql.drivermanager; импорт java.sql.resultset; импорт java.sql.sqlexception; импорт java.sql.statement; import java.preperties; String Driver = null; частная статическая строка url = null; частная статическая строка username = null; Частная статическая строка пароль = null; static {try {// Читать информацию об подключении базы данных в файле db.properties inputstream in = jdbcutils.class.getClassloader (). getResourCeasStream ("db.properties"); Свойства prop = новые свойства (); prop.load (in); // Получить драйвер подключения к базе данных = Prop.getProperty ("Driver"); // Получить URL -адрес URL -адреса подключения базы данных url = prop.getProperty ("url"); // Получить базу данных подключение username username = prop.getProperty ("имя пользователя"); // Получить подключение к базе данных пароль пароля = prop.getProperty ("пароль"); // Загрузить драйвер базы данных Class.forname (Driver); } catch (Exception e) {бросить новый ExceptionInitializeRerror (e); }} / *** @method: getConnection* @description: Получить объект подключения базы данных* @anthor: The Lofty Wolf** @return Connection Connection объект подключения* @Throws SQLEXCEPTION* / public Static Connection GetConnection () Throws Sqlexception {returnmanager.getConnection (url, username, passwer); } / ** * @method: Release * @description: Ресурсы освобождения, * Ресурсы, которые следует выпустить, включают объект подключения к базе данных подключения, объект оператора, ответственный за выполнение команд SQL, и объект Resultset, который хранит результаты запроса * @anthor: 光克 * * @param conn * @param St * @param rs * / public void vide void. if (rs! = null) {try {// Закройте объект ResultSet, который хранит результаты запроса rs.close (); } catch (Exception e) {e.printstackTrace (); } rs = null; } if (st! = null) {try {// Закрыть объект оператора, ответственный за выполнение команд SQL St.close (); } catch (Exception e) {e.printstackTrace (); }} if (onn! } catch (Exception e) {e.printstackTrace (); }}}} 3. Используйте JDBC для обработки большого текста в MySQL
Для типа текста в MySQL можно вызвать следующий метод для его установки
PrediveStatement.setchAracterStream (Index, Reader, Length); // Обратите внимание, что длина должна быть установлена и установлена на тип int
Для типов текстов в MySQL вы можете вызвать следующий метод для их получения.
reader = resultset.getCharacterStream (String ColumnLabel); 2 String S = ResultSet.getString (String ColumnLabel);
3.1. Тестовый пример
1. Напишите сценарии SQL Test Scripts
Создать базу данных jdbcStudy; используйте jdbcStudy; Create Table TestClob (id int первичный ключ Auto_Increment, резюме текст);
2. Напишите тестовый код следующим образом:
Пакет me.gacl.demo; импорт java.io.file; import java.io.filereader; импорт java.io.filewriter; import java.io.reader; импорт java.sql.connection; import java.sql.preparedstatement; import java.sql.resultset; me.gacl.utils.jdbcutils; import org.junit.test;/*** @classname: jdbcoperaclob* @description: используйте Jdbc для работы большого текста MySQL* @author: lonely canglang* @date: 2014-9-19 10:10:04 PM **/public jdg @Method: добавить * @description: вставить большие текстовые данные в базу данных * @anthor: 发年 * */ @test public void add () {connection conn = null; Подготовленное Statement ST = NULL; Результат RS = NULL; Reader Reader = null; try {conn = jdbcutils.getConnection (); String sql = "Вставка в тестовые значения (резюме) (?)"; st = conn.preparestatement (sql); // Путь, полученный таким образом, пространства, в которых пространство будет заменено на «%20», используя «string path = jdbcoperaclob.class.getclassloader (). GetResource (" data.txt "). GetPath (); // Заменить файл«%20 ». FILEREADER (файл); Jdbcutils. «Выберите резюме из TestClob, где id = 2»; // Использование resultset.getCharacterStream («Имя поля»), чтобы получить содержимое считываемого считывателя данных с большим текстовым данных = rs.getCharacterStream («Резюме»); char buffer [] = new char [1024]; int len = 0; FileWriter Out = new FileWriter ("d: //1.txt"); while ((len = reader.read (buffer))> 0) {contentstr += new String (buffer); out.write (буфер, 0, Лен); } out.close (); reader.close (); } System.out.println (Content); System.out.println ("-----------------------------------------------"); System.out.println (contentstr); } catch (Exception e) {e.printstackTrace (); } наконец {jdbcutils.release (conn, st, rs); }}}4. Используйте JDBC для обработки двоичных данных MySQL
Для типа Blob в MySQL можно назвать следующие настройки метода:
Подготовлено. SetBinaryStream (i, InputStream, длина);
Для типа Blob в MySQL вы можете вызвать следующий метод для получения:
InputStream in = resultset.getBinarySteam (String ColumnLabel); inputStream in = ResultSet.getBlob (String ColumnLabel) .getBinaryStream ();
4.1. Тестовый пример
1. Напишите сценарии SQL Test Scripts
Создать Table TestBlob (id int первичный ключ Auto_Increment, изображение Longblob);
2. Напишите тестовый код следующим образом:
Пакет me.gacl.demo; импорт java.io.file; import java.io.fileinputstream; импорт java.io.fileoutputstream; импорт java.io.inputstream; импорт java.sql.connection; импорт java.sql.preparedStatement; импорт Java.sql. me.gacl.utils.jdbcutils; import org.junit.test;/ *** @classname: jdbcoperaclob* @description: используйте JDBC для манипулирования бинарными данными MySQL (например, изображения, звуки, двоичные тексты)* @author: Luke Canglang* @date: 2014-19 10: 10.10: 10.10:10. Jdbcoperablob { / *** @method: добавить* @description: вставить двоичные данные в базу данных* @anthor: luke canglang** / @test public add () {connect conn = null; Подготовленное Statement ST = NULL; Результат RS = NULL; try {conn = jdbcutils.getConnection (); String sql = "Вставка в тестовые значения (изображение) (?)"; st = conn.preparestatement (sql); // Путь, полученный таким образом, пространства в нем будут заменены на «%20» вместо строки path = jdbcoperablob.class.getclassloader (). Getresource ("01.jpg"). GetPath (); // заменить "%20" будет заменена на пространство Path = path.replaceall ("%20", ""); File file = new File (path); FileInputStream fis = new FileInputStream (file); // Сгенерированный потоковой st.setbinarystream (1, fis, (int) file.length ()); int num = st.executeupdate (); if (num> 0) {System.out.println ("Вставка успешно!!"); } fis.close (); } catch (Exception e) {e.printstackTrace (); } наконец {jdbcutils.release (conn, st, rs); }} / *** @method: read* @description: прочитать двоичные данные в базе данных* @anthor: 六后** / @test public void read () {connect conn = null; Подготовленное Statement ST = NULL; Результат RS = NULL; try {conn = jdbcutils.getConnection (); String sql = "Выберите изображение из TestBlob, где id =?"; st = conn.preparestatement (sql); St.setint (1, 1); rs = st.executequery (); if (rs.next ()) {// inputStream in = rs.getblob ("image"). getBinarySteam (); // Этот метод также может быть входным потоком в = rs.getBinarySteam ("Image"); int len = 0; байтовый буфер [] = новый байт [1024]; FileOutputStream OUT = new FileOutputStream ("d: //1.jpg"); while ((len = in.read (buffer))> 0) {out.write (buffer, 0, len); } in.close (); out.close (); }} catch (Exception e) {e.printstackTrace (); } наконец {jdbcutils.release (conn, st, rs); }}}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.