【发布时间】:2019-04-21 06:49:36
【问题描述】:
我正在尝试使用 phpmyadmin 将图像上传到 mysql 数据库,尽管程序可以运行并存储其余数据,但图像未正确存储。
如果我直接在 phpmyadmin 中上传图像,则 Blob 类型的图像大小为 26.6 KB,但如果我尝试使用 javafx 上传,图像大小约为 10 B,所以我认为我没有正确上传。
@Override
public void guardarMonstruo(MonstruoDTO monstruo) {
con= ConexionBDA.getInstance().getCon();
try {
if (con != null){
byte[] blob = imagenToByte(monstruo.getImagen());
System.out.println(blob.toString());
statement = con.createStatement();
statement.executeUpdate("INSERT INTO monstruos (Nombre,Habitat,Estado,ColaCercenable,DragonAnciano,DebilidadFuego,DebilidadAgua,Debilidadrayo,DebilidadHielo,DebilidadDraco,ImagenMonstruo) VALUES ('"+monstruo.getNombre()+"'"+","+"'"+monstruo.getHabitat()+"'"+","+"'"+monstruo.getEstado()+"'"+","+"'"+monstruo.getColaCercenable()+"'"+","+"'"+monstruo.getDragonAnciano()+"'"+","+"'"+monstruo.getDebilidadFuego()+"'"+","+"'"+monstruo.getDebilidadAgua()+"'"+","+"'"+monstruo.getDebilidadRayo()+"'"+","+"'"+monstruo.getDebilidadHielo()+"'"+","+"'"+monstruo.getDebilidadDraco()+"'"+","+"'"+blob+"');");
con.close();
statement.close();
}
}
catch(Exception e) {
e.printStackTrace();
}
}
而 imagenToByte() 方法用于将图像传递给字节是这样的:
private byte[] imagenToByte(Image imagen) {
BufferedImage bufferimage = SwingFXUtils.fromFXImage(imagen, null);
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
ImageIO.write(bufferimage, "jpg", output );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte [] data = output.toByteArray();
return data;
}
我不知道我做错了什么,你能帮帮我吗?
【问题讨论】:
-
这不是无关的。准备好的语句将使您免于 SQL 注入,并允许您将 blob 数据插入表中。你确定你的代码没有报错吗?
标签: mysql eclipse javafx phpmyadmin