J'essaie d'ajouter une image à un champ BLOB dans une base de données mysql. L'image va être inférieure à 100kb. Cependant, je rencontre des problèmes et je me demandais quelle serait la meilleure façon d'ajouter ces données à la base de données?Ajout d'une image à une base de données en Java
com.mysql.jdbc.MysqlDataTruncation: troncature données: données trop long pour la colonne « Données » à la ligne 1
PreparedStatement addImage = conn.prepareStatement("INSERT INTO Images (Width, Height, Data) VALUES (?,?,?)",Statement.RETURN_GENERATED_KEYS);
Voici la méthode que j'utilise pour ajouter l'image dans la base de données.
public int addImage(Image image) throws SQLException, IllegalArgumentException
{
this.addImage.clearParameters();
byte[] imageData = ImageConverter.convertToBytes(image);
int width = image.getWidth(null);
int height = image.getHeight(null);
if (width == -1 || height == -1)
{
throw new IllegalArgumentException("You must load the image first.");
}
this.addImage.setInt(1, width);
this.addImage.setInt(2, height);
this.addImage.setBytes(3, imageData);
this.addImage.executeUpdate();
ResultSet rs = this.addImage.getGeneratedKeys();
rs.next();
return rs.getInt(1);
}
Après modification du type dataField à un MEDIUMBLOB et de tenter de placer un fichier image 140kb dans la base de données que j'ai reçu une autre erreur.
com.mysql.jdbc.PacketTooBigException: paquet pour la requête est trop grand
Est-ce le problème de la façon dont je suis en train d'ajouter les données à la base de données. Devrais-je adopter une approche différente? Si oui, de quelle façon?
Il peut être utile de poster la définition de la table à laquelle vous essayez d'ajouter l'image. –