1. Créez un tableau :
Copiez le code comme suit :
déposer le tableau s'il existe une photo ;
CRÉER UNE TABLE photo (
id INT NOT NULL AUTO_INCREMENT CLÉ PRIMAIRE,
nom VARCHAR(100) COMMENTAIRE 'nom',
photo blob COMMENTAIRE 'photo'
)
MOTEUR=InnoDB
Jeu de caractères par défaut = utf8
COLLATE=utf8_general_ci;
Le format de stockage des données des images dans MySql est de type blob ; Blob est un conteneur qui peut stocker des fichiers binaires.
2. Écrivez une classe d'outils pour l'accès aux données du flux d'images :
Copiez le code comme suit :
importer java.io.File ;
importer java.io.FileInputStream ;
importer java.io.FileNotFoundException ;
importer java.io.FileOutputStream ;
importer java.io.IOException ;
importer java.io.InputStream ;
classe publique ImageUtil {
fichier statique privé file = null ;
/**
* Lire le flux binaire d'image à partir d'un fichier local
*
* @param fichier d'entrée
* @retour
*/
public static FileInputStream getImageByte (String infile) {
FileInputStream imageByte = null ;
fichier = nouveau fichier (infile);
essayer {
imageByte = nouveau FileInputStream(fichier);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
renvoie imageByte ;
}
/**
* Lire le flux d'images sous forme d'image
*
* @param inputStream
* Chemin @param
*/
public static void readBlob (InputStream inputStream, chemin de chaîne) {
essayer {
FileOutputStream fileOutputStream = new FileOutputStream(chemin);
octet[] tampon = nouvel octet[1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, len);
}
inputStream.close();
fileOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3. Enregistrez les fichiers locaux dans la base de données
Vous devez ajouter le pilote de base de données MySql--mysql-connector-java-5.1.24-bin.jar
Copiez le code comme suit :
importer java.io.IOException ;
importer java.io.InputStream ;
importer java.sql.Connection ;
importer java.sql.DriverManager ;
importer java.sql.PreparedStatement ;
importer java.sql.SQLException ;
classe publique ImageInsert {
public static void main (String[] arguments) {
essayer {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstanciationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Chaîne utilisateur = "root" ;
Mot de passe de chaîne = "root" ;
Chaîne url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8" ;
Connexion connexion = null ;
essayer {
connection = DriverManager.getConnection (url, utilisateur, mot de passe);
} catch (SQLException e) {
e.printStackTrace();
}
PreparedStatement PreparedStatement = null ;
InputStream inputStream = null ;
inputStream = ImageUtil.getImageByte("D://temp//photo1.png");
essayer {
String sql = "insérer dans les valeurs de la photo (id, nom, photo) (?,?,?)" ;
PrepareStatement = connexion.prepareStatement(sql);
préparéStatement.setInt(1, 1);
PrepareStatement.setString(2, "Julie");
préparéStatement.setBinaryStream(3, inputStream,
inputStream.available());
préparéStatement.execute();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} enfin {
essayer {
si (inputStream != null)
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
} enfin {
essayer {
si (preparedStatement != null)
PrepareStatement.close();
} catch (SQLException e) {
e.printStackTrace();
} enfin {
essayer {
connexion.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
4. Lire et générer des images à partir de la base de données
Copiez le code comme suit :
importer java.io.IOException ;
importer java.io.InputStream ;
importer java.sql.Connection ;
importer java.sql.DriverManager ;
importer java.sql.ResultSet ;
importer java.sql.SQLException ;
importer java.sql.Statement ;
classe publique ImageGet {
public static void main (String[] arguments) {
essayer {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstanciationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Chaîne utilisateur = "root" ;
Mot de passe de chaîne = "root" ;
Chaîne url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8" ;
Connexion connexion = null ;
essayer {
connection = DriverManager.getConnection (url, utilisateur, mot de passe);
} catch (SQLException e) {
e.printStackTrace();
}
Déclaration déclaration = null ;
ResultSet resultSet = null ;
InputStream inputStream = null ;
essayer {
instruction = connexion.createStatement();
String sql = "sélectionnez p.photo à partir de la photo p où id = 1" ;
resultSet = instruction.executeQuery(sql);
resultSet.next();
inputStream = resultSet.getBinaryStream("photo");
ImageUtil.readBlob(inputStream, "D://temp//photo2.png");
} catch (SQLException e) {
e.printStackTrace();
} enfin {
essayer {
si (inputStream != null)
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
} enfin {
essayer {
si (resultSet != null)
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
} enfin {
si (instruction != null)
si (instruction != null)
essayer {
instruction.close();
} catch (SQLException e) {
e.printStackTrace();
} enfin {
si (connexion != null)
essayer {
connexion.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
}
5. Terminé !