在数据库上保存图像

时间:2014-09-21 22:30:23

标签: java sql image

基本上我必须在我的数据库上保存一个放在JLabel上的图像(我有一个BLOB var)

JLabel LImg = new JLabel(); ImageIcon img = new ImageIcon("**filepath**"); LImg.setIcon(img); stmt.executeUpdate("INSERT INTO CLIENT(ID, IMAGE) VALUES (1,"+LImg.getIcon()+")");

运行几次测试后,我发现getIcon方法返回文件路径,这解释了这个错误

  

GDS例外。 335544569.动态SQL错误   SQL错误代码= -104   令牌未知 - 第1行,第132列

     
    

  

请特别注意你的答案(我是JAVA的新人)

1 个答案:

答案 0 :(得分:1)

您无法将图像本身粘贴到SQL语句中。您需要使用参数化的预准备语句,并将插入的值设置为字节数组:

BufferedImage bi = (BufferedImage)LImg.getImage();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bi, type, baos);
byte[] dataToWrite = baos.toByteArray();
PreparedStatement stmt = con.prepareStatement("INSERT INTO CLIENT(ID, IMAGE) VALUES (1,?)");
stmt.setBlob(1, dataToWrite);
stmt.executeUpdate();