如何在Java中将图像插入数据库

时间:2015-06-19 20:56:57

标签: java

我想通过“浏览”按钮将图像插入数据库。这一行有什么问题ps.setBlob(l16, inputStream)?此行每次都显示错误。

我的代码是:

Class.forName("com.mysql.jdbc.Driver");  

Connection con=DriverManager.getConnection(  
"jdbc:mysql://localhost:3306/hostel_management","root","");  

PreparedStatement ps= con.prepareStatement("insert into student_info values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");  

ps.setString(1, tf1.getText());
ps.setString(2, tf2.getText());
.
.
.
ps.setString(15, tf15.getText());

InputStream inputStream = new FileInputStream(new File(tf16.getText()));

ps.setBlob(16, inputStream);

ps.execute(); 

JOptionPane.showMessageDialog(null, "Successfully Inserted", "Message", JOptionPane.ERROR_MESSAGE);

con.close();

2 个答案:

答案 0 :(得分:0)

将图像转换为Base64,然后将其作为文本保存到数据库中。当你需要它时,获取它并将其恢复为位图并使用它。

使用Apache commons以最佳方式执行

Base64.encode(FileUtils.readFileToByteArray(file));

对于解码,

InputStream stream = new ByteArrayInputStream(Base64.decode(image.getBytes(), Base64.DEFAULT));

其中image是一个包含Base64文本的字符串。 如果您需要更多帮助,请告诉我。

答案 1 :(得分:-1)

最佳方法是将图像存储在文件夹中,并将该图像的路径保存到数据库中。将Blob或Clob对象保存到数据库中非常耗时,并且在某些情况下会导致效率低下。