我想通过“浏览”按钮将图像插入数据库。这一行有什么问题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();
答案 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对象保存到数据库中非常耗时,并且在某些情况下会导致效率低下。