JavaSE-向数据库保存图片并且读取
2015-12-18 20:51
555 查看
JavaSE-向数据库保存图片并且读取
SqlDemo.java
[code]package com.xieth.sql; import java.io.File; import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class SqlDemo { private Connection conn = null; private PreparedStatement ps = null; public SqlDemo() throws ClassNotFoundException, SQLException { String driverClass = "com.mysql.jdbc.Driver"; String jdbcUrl = "jdbc:mysql:///person";// localhost可以省略 String user = "root"; String password = "12345"; Class.forName(driverClass); // 注册加载驱动 conn = DriverManager.getConnection(jdbcUrl, user, password); System.out.println(conn); // 获取数据库连接 } private void insertData() throws SQLException { String path = "image/Head.jpg"; FileInputStream input = null; byte[] buffer = null; // 定义缓冲区 try { input = new FileInputStream(new File(path)); // 构建文件输入流对象 buffer = new byte[input.available()]; // 构建缓冲区 input.read(buffer); // 将图标读入缓冲区 } catch (Exception e) { } finally { if (input != null) { try { input.close(); // 关闭文件输入流 } catch (Exception e) { e.printStackTrace(); } } } String sql = "insert into user(img)" + "values(?)"; ps = conn.prepareStatement(sql); ps.setBytes(1, buffer); int count = ps.executeUpdate(); if (count > 0) System.out.println("成功"); else System.out.println("失败"); } private byte[] getImage() throws SQLException{ byte[] buffer = null; String sql = "select img from user"; ps = conn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); if (rs.next()) buffer = rs.getBytes("img"); return buffer; } public static void main(String[] args) throws ClassNotFoundException, SQLException { SqlDemo s = new SqlDemo(); byte[] b = s.getImage(); new MainImage(b); } }
MainImage.java
[code]package com.xieth.sql; import java.awt.*; import javax.swing.*; public class MainImage extends JFrame { private JLabel label = null; private JPanel panel = null; private byte[] buffer = null; public MainImage(byte[] buffer) { super("Image"); this.buffer = buffer; panel = new JPanel(); init(); } private void init() { this.setSize(540, 390); // 设置长度和宽度 this.setLayout(null); // 自定义布局 this.setLocationRelativeTo(this.getOwner()); // 设置窗体的相对位置 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panel.setSize(540, 400); label = new JLabel(new ImageIcon(buffer)); panel.add(label); add(panel); this.setVisible(true); } }
数据库里面的数据:
运行效果:
成功读取数据库里面的图片
相关文章推荐
- Axis2 java调用.net webservice接口的问题(郑州就维)
- 【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】
- 聊聊高并发(二十九)解析java.util.concurrent各个组件(十一) 再看看ReentrantReadWriteLock可重入读-写锁
- 设置eclipse默认编码为UTF-8 Set default encoding to utf-8 in eclipse
- Spring in action(Spring实战) 第四版中文翻译
- struts2所必须的jar包
- java复制那些事
- java学习之内部类
- Java 异常处理
- 使用JDB调试Java程序
- Java基础知识总结
- JAVA中getclass用法
- java中double、float类型计算精度丢失问题
- Eclipse全屏及插件下载
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- Java中static关键字总结
- JAVA语法基础之数组
- java中instanceof用法
- java中Ping++退款
- eclipse luna版本安装svn