gpt4 book ai didi

mysql - 使用javafx将图像上传到数据库

转载 作者:行者123 更新时间:2023-11-29 16:40:29 24 4
gpt4 key购买 nike

我正在尝试使用 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;
}

我不知道我做错了什么,你能帮我吗?

最佳答案

您将 toString 方法的结果插入到查询字符串中,但这不会产生所需的结果。使用 PreparedStatement 并设置 Blob 参数:

try (PreparedStatement ps = con.prepareStatement("INSERT INTO monstruos (Nombre,Habitat,Estado,ColaCercenable,DragonAnciano,DebilidadFuego,DebilidadAgua,Debilidadrayo,DebilidadHielo,DebilidadDraco,ImagenMonstruo) VALUES (?,?,?,?,?,?,?,?,?,?,?)")) {
ps.setString(1, monstruo.getNombre());
ps.setString(2, monstruo.getHabitat());
ps.setString(3, monstruo.getEstado());
ps.setString(4, monstruo.getColaCercenable());
ps.setString(5, monstruo.getDragonAnciano());
ps.setString(6, monstruo.getDebilidadFuego());
ps.setString(7, monstruo.getDebilidadAgua());
ps.setString(8, monstruo.getDebilidadRayo());
ps.setString(9, monstruo.getDebilidadHielo());
ps.setString(10, monstruo.getDebilidadDraco());

// upload the data, not the toString result of the array
ps.setBlob(11, new SerialBlob(blob));

ps.executeUpdate();
}

关于mysql - 使用javafx将图像上传到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53365680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com