利用数据库如何存入BLOB格式图片,并从数据库中取出BLBO格式图片显示出来
2014-05-16 10:21
627 查看
利用数据库如何存入BLOB格式图片,并从数据库中取出BLBO格式图片显示出来
这两天需要在图片存储性能方面做一些实验,无非就是两种方法,一是将图片以BLOB格式存入数据库中,二是将图片路径存入数据库中,然后从数据库中提取出来。实验数据是从1000张图片中遍历取出100张,先导入1000张图片进入数据库,然后从数据库导出到本地。样本比较小哈。。。。 下面贴出代码
package DmTest; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DmTest { //定义 DM JDBC 驱动串 String jdbcString = "dm.jdbc.driver.DmDriver"; //定义 DM URL 连接串 String urlString = "jdbc:dm://localhost:5236/"; //定义连接用户名 String userName = "SYSDBA"; //定义连接用户口令 String password = "SYSDBA"; static //定义sql语句 //String sqlString ="create table yujin3(a int,b int,c int);"; String sqlString1="insert into yujin3 values(123,14,1234);"; //定义连接对象 static Connection conn = null; static Statement stmt = null; static PreparedStatement ps = null; static ResultSet rs = null; //private static String sqlString1; /* 加载 JDBC 驱动程序 * @throws SQLException 异常 */ public void loadJdbcDriver() throws SQLException { try { System.out.println("Loading JDBC Driver..."); //加载 JDBC 驱动程序 //DriverManager.registerDriver(new dm.jdbc.driver.DmDriver()); Class.forName(jdbcString); } catch (ClassNotFoundException e) { throw new SQLException("Load JDBC Driver Error1: " + e.getMessage()); } catch (Exception ex) { throw new SQLException("Load JDBC Driver Error : "+ ex.getMessage()); } } public void connect() throws SQLException { try { System.out.println("Connecting to DM Server..."); //连接 DM 数据库 conn = DriverManager.getConnection(urlString, userName, password); } catch (SQLException e) { throw new SQLException("Connect to DM Server Error : "+ e.getMessage()); } } /* 关闭连接 * @throws SQLException 异常 */ public void disConnect() throws SQLException { try { //关闭连接 conn.close(); System.out.println("close"); } catch (SQLException e) { throw new SQLException("close connection error : " + e.getMessage()); } } public static void main(String args[]) throws IOException, SQLException { DmTest basicApp = new DmTest(); // 加载驱动程序 basicApp.loadJdbcDriver(); basicApp.connect(); //创建表 String sql = "CREATE TABLE blobtest(" + "b_title int,"+ "b_text Blob"+ ")"; System.out.println(sql); stmt = conn.createStatement(); stmt.executeUpdate(sql); System.out.println("创建数据表成功!"); sql="INSERT INTO blobtest(b_title,b_text)VALUES(?,?)"; ps = conn.prepareStatement(sql); //插入图片 ,将图片先编程byte数组,然后存入blob字段中 for(int i=0;i<=999;i++) { String s="c:\\images\\"+i+".jpg"; File file = new File(s); InputStream inputStream = new FileInputStream(file); ps.setInt(1, i); //新建一byte数组 byte[] buf=new byte[inputStream.available()]; //将文件读入到byte[]中 inputStream.read(buf); ps.setBytes(2, buf); ps.executeUpdate(); System.out.println("图片"+i+"插入成功!"); } //读取图片出来,保存到本地的磁盘上面 sql = "SELECT b_title,b_text FROM blobtest"; ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while(rs.next()){ if(rs.getInt(1)%10==0){ System.out.println("图片名: "+rs.getInt(1)); Blob blob = rs.getBlob("b_text"); String s1="c:\\imagett\\"+rs.getInt(1)+".jpg"; File file2 = new File(s1); OutputStream outputStream = new FileOutputStream(file2); try { outputStream.write(blob.getBytes(1,(int)blob.length())); } catch (IOException e) { e.printStackTrace(); } //打印出来的为对象 System.out.println("图片内容: "+ blob.getBinaryStream()); } } basicApp.disConnect(); } }
数据库我使用的是国产达梦数据库,如果要改其他的话也比较简单。
然后在相应路径下面就生成了100张图片,速度还是比较快的,关于实验数据大家可以去网上下载,或者减少样本,一两张都可以,只是要稍微修改下代码就行。
相关文章推荐
- 如何在struts2的框架下显示从数据库中取出的图片?图片以Blob格式保存,取出后用怎样的标签呢?
- 将图片以Blob格式存入数据库,再通过Servlet显示到界面
- asp.net FileUpload 控件上传文件 以二进制的形式存入数据库并将图片显示出来
- C#把图片转换字节存入数据库在读取显示出来。
- struts2从数据库中读取mysql的Blob格式图片和sqlserver中image格式图片显示到jsp上
- 图片存入数据库并取出显示
- IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架
- web图片上传和数据库取出Blob传到页面显示图片
- 网络通信、图片显示、数据库操作……Android程序员如何利用开源框架
- 图片转二进制存入oracle字段类型为Blob(取出二进制转图片并显示),图片带路径
- 如何把存储在数据库中的图片根据自己的需要的大小显示出来。【转】
- java hibernate 将图片存入数据库,并从数据库取出显示在网页上
- 如何在JPG或BMP图片上显示输入的订单数据内容,并在报表打印时显示出来,后台数据库是SQL SERVER 2000 ,先谢了.高分!
- Winform下如何上传图片并显示出来。同时保存到数据库
- 如何将图片存入数据库中,并从数据库中取出图片
- 如何把从数据库读出来的数据以excel格式显示到网页?
- 利用C#,SqlXml技术将NorthWind中的所有记录取出并显示出来(包括员工图片)
- 关于在struts2中利用jquery中如何动态从数据库中加载图片并显示
- C#用LINQ to SQL把PictureBox中的图片存入数据库和取出数据库中的图片并显示在PictureBox中
- [原] XAF 如何将数据库中Byte array图片显示出来