Tôi đang cố gắng thêm hình ảnh vào trường BLOB trong cơ sở dữ liệu mysql. Hình ảnh sẽ nhỏ hơn 100kb. Tuy nhiên tôi đang chạy vào vấn đề và đã tự hỏi những gì sẽ là một cách tốt hơn để thêm dữ liệu này vào cơ sở dữ liệu?Thêm hình ảnh vào cơ sở dữ liệu trong Java
com.mysql.jdbc.MysqlDataTruncation: Dữ liệu cắt ngắn: Dữ liệu quá dài cho cột 'dữ liệu' tại hàng 1
PreparedStatement addImage = conn.prepareStatement("INSERT INTO Images (Width, Height, Data) VALUES (?,?,?)",Statement.RETURN_GENERATED_KEYS);
Dưới đây là phương pháp mà tôi đang sử dụng để thêm hình ảnh vào cơ sở dữ liệu.
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);
}
Sau Thay đổi kiểu DataField đến một Mediumblob và cố gắng đặt một tập tin ảnh 140kb vào cơ sở dữ liệu tôi nhận được một lỗi khác nhau.
com.mysql.jdbc.PacketTooBigException: Packet cho truy vấn quá lớn
là vấn đề cách thức mà tôi đang cố gắng để thêm dữ liệu vào cơ sở dữ liệu. Tôi có nên thực hiện một cách tiếp cận khác không? Nếu như vậy theo cách nào?
Có thể đáng để đăng định nghĩa của bảng bạn đang cố thêm hình ảnh vào. –