1. Crea una tabla:
Copie el código de código de la siguiente manera:
soltar la tabla si existe una foto;
CREAR TABLA foto (
id INT NO NULL CLAVE PRIMARIA AUTO_INCREMENT,
nombre VARCHAR(100) COMENTARIO 'nombre',
foto blob COMENTARIO 'foto'
)
MOTOR=InnoDB
JUEGO DE CARACTERES PREDETERMINADO = utf8
COLLATE=utf8_general_ci;
El formato de almacenamiento de datos de imágenes en MySql es tipo blob; Blob es un contenedor que puede almacenar archivos binarios.
2. Escriba una clase de herramienta para acceder a datos de flujo de imágenes:
Copie el código de código de la siguiente manera:
importar java.io.File;
importar java.io.FileInputStream;
importar java.io.FileNotFoundException;
importar java.io.FileOutputStream;
importar java.io.IOException;
importar java.io.InputStream;
clase pública ImageUtil {
Archivo de archivo estático privado = nulo;
/**
* Leer flujo binario de imagen desde un archivo local
*
* @param archivo interno
* @devolver
*/
FileInputStream estático público getImageByte (archivo de cadena) {
FileInputStream imageByte = nulo;
archivo = nuevo archivo (archivo interno);
intentar {
imageByte = nuevo FileInputStream(archivo);
} captura (FileNotFoundException e) {
e.printStackTrace();
}
devolver imagenByte;
}
/**
* Leer la secuencia de imágenes como una imagen.
*
* @param flujo de entrada
* ruta @param
*/
readBlob vacío estático público (InputStream inputStream, ruta de cadena) {
intentar {
FileOutputStream fileOutputStream = nuevo FileOutputStream(ruta);
byte[] buffer = nuevo byte[1024];
int longitud = 0;
mientras ((len = inputStream.read(buffer)) != -1) {
fileOutputStream.write(búfer, 0, len);
}
inputStream.close();
fileOutputStream.close();
} captura (FileNotFoundException e) {
e.printStackTrace();
} captura (IOException e) {
e.printStackTrace();
}
}
}
3. Guarde los archivos locales en la base de datos
Debe agregar el controlador de la base de datos MySql: mysql-connector-java-5.1.24-bin.jar
Copie el código de código de la siguiente manera:
importar java.io.IOException;
importar java.io.InputStream;
importar java.sql.Conexión;
importar java.sql.DriverManager;
importar java.sql.PreparedStatement;
importar java.sql.SQLException;
clase pública Insertar imagen {
público estático vacío principal (String [] argumentos) {
intentar {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} captura (InstantiationException e) {
e.printStackTrace();
} captura (IllegalAccessException e) {
e.printStackTrace();
} captura (ClassNotFoundException e) {
e.printStackTrace();
}
Usuario de cadena = "raíz";
Contraseña de cadena = "raíz";
URL de cadena = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
Conexión de conexión = nula;
intentar {
conexión = DriverManager.getConnection(url, usuario, contraseña);
} captura (SQLException e) {
e.printStackTrace();
}
DeclaraciónPreparada declaración preparada = nulo;
Flujo de entrada flujo de entrada = nulo;
inputStream = ImageUtil.getImageByte("D://temp//photo1.png");
intentar {
String sql = "insertar en los valores de la foto (id, nombre, foto) (?,?,?)";
prepareStatement = conexión.prepareStatement(sql);
preparadoStatement.setInt(1, 1);
prepareStatement.setString(2, "Julie");
preparadoStatement.setBinaryStream(3, inputStream,
inputStream.disponible());
preparadoStatement.execute();
} captura (SQLException e) {
e.printStackTrace();
} captura (IOException e) {
e.printStackTrace();
} finalmente {
intentar {
si (flujo de entrada! = nulo)
inputStream.close();
} captura (IOException e) {
e.printStackTrace();
} finalmente {
intentar {
si (declaración preparada! = nulo)
declaraciónpreparada.close();
} captura (SQLException e) {
e.printStackTrace();
} finalmente {
intentar {
conexión.cerrar();
} captura (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
4. Leer y generar imágenes desde la base de datos.
Copie el código de código de la siguiente manera:
importar java.io.IOException;
importar java.io.InputStream;
importar java.sql.Conexión;
importar java.sql.DriverManager;
importar java.sql.ResultSet;
importar java.sql.SQLException;
importar java.sql.Statement;
clase pública ImageGet {
público estático vacío principal (String [] argumentos) {
intentar {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} captura (InstantiationException e) {
e.printStackTrace();
} captura (IllegalAccessException e) {
e.printStackTrace();
} captura (ClassNotFoundException e) {
e.printStackTrace();
}
Usuario de cadena = "raíz";
Contraseña de cadena = "raíz";
URL de cadena = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
Conexión de conexión = nula;
intentar {
conexión = DriverManager.getConnection(url, usuario, contraseña);
} captura (SQLException e) {
e.printStackTrace();
}
Declaración declaración = nulo;
Conjunto de resultados conjunto de resultados = nulo;
Flujo de entrada flujo de entrada = nulo;
intentar {
declaración = conexión.createStatement();
String sql = "seleccione p.photo de la foto p donde id = 1";
conjunto de resultados = declaración.executeQuery(sql);
resultadoSet.siguiente();
inputStream = resultSet.getBinaryStream("foto");
ImageUtil.readBlob(inputStream, "D://temp//photo2.png");
} captura (SQLException e) {
e.printStackTrace();
} finalmente {
intentar {
si (flujo de entrada! = nulo)
inputStream.close();
} captura (IOException e) {
e.printStackTrace();
} finalmente {
intentar {
si (conjunto de resultados! = nulo)
resultadoSet.close();
} captura (SQLException e) {
e.printStackTrace();
} finalmente {
si (declaración! = nulo)
si (declaración! = nulo)
intentar {
declaración.close();
} captura (SQLException e) {
e.printStackTrace();
} finalmente {
si (conexión! = nulo)
intentar {
conexión.cerrar();
} captura (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
}
5.¡Se acabó!