基本上我必须在我的数据库上保存一个放在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的新人)
答案 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();