此代码拍摄图片test.gif并将图片位值放入bytea coloumn。
public void addImage() throws SQLException, IOException {
Connection con = openConnection();
File file = new File("test.gif");
FileInputStream fis = new FileInputStream(file);
PreparedStatement ps = con.prepareStatement("INSERT INTO image VALUES (?, ?, ?)");
ps.setString(1, file.getName());
ps.setBinaryStream(2, fis, (int)file.length());
ps.setInt(3,1);
ps.executeUpdate();
fis.close();
}
我的下一个目标是以字节为单位显示保存在数据库中的图片。怎么办呢?
答案 0 :(得分:2)
类似的东西:
// Run a query again the IMAGE table to fetch the image with the given id
public Image readImage(Connection conn, int id) throws SQLException {
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement("SELECT contents FROM image WHERE id = ?");
pstmt.setInt(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
InputStream is = rs.getBinaryStream(1);
return ImageIO.read(is);
} else {
return null;
}
} finally {
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException ignored) {
}
}
}
}
// Display the given Image on a Swing frame
public void showImage(final Image img) {
JFrame frame = new JFrame("Image");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(img.getWidth(), img.getHeight());
frame.add(new JPanel() {
public void paint(Graphics g) {
g.drawImage(img, 0, 0, null);
}
});
frame.show();
}
可能适合你。