Ich versuche, ein Bild zu einem BLOB-Feld in einer MySQL-Datenbank hinzuzufügen. Das Bild wird weniger als 100 KB groß sein. Allerdings habe ich Probleme und fragte mich, was wäre eine bessere Möglichkeit, diese Daten in die Datenbank aufzunehmen?Hinzufügen von Bild zu einer Datenbank in Java
com.mysql.jdbc.MysqlDataTruncation: Datenabschneide: Daten zu lang für Spalte ‚Daten‘ in Zeile 1
PreparedStatement addImage = conn.prepareStatement("INSERT INTO Images (Width, Height, Data) VALUES (?,?,?)",Statement.RETURN_GENERATED_KEYS);
Unten sind die Methode, die ich das Bild in die Datenbank hinzufügen verwenden.
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);
}
Nach dem Datenfeld Typ in einen MEDIUMBLOB ändern und versuchen, eine 140kb Bilddatei in die Datenbank zu platzieren i einen anderen Fehler empfangen.
com.mysql.jdbc.PacketTooBigException: Paket für die Suche ist zu groß
Ist das Problem der Art und Weise, in der ich die Daten in die Datenbank hinzufügen versuchen. Soll ich einen anderen Ansatz wählen? Wenn ja, in welcher Richtung?
Es kann sich lohnen, die Definition der Tabelle zu veröffentlichen, der Sie das Bild hinzufügen möchten. –