zoukankan      html  css  js  c++  java
  • 20160408javaweb之JDBC 大二进制和大文件存取

    一、大文本存取:

    我们有一本约10M的小说,现存入数据库:

    代码如下:以junit测试的方式给出

    package com.dzq.lob;
    
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.Reader;
    import java.io.Writer;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    import org.junit.Test;
    
    import com.dzq.util.JDBCUtils;
    
    public class TextDemo1 {
    @Test
    public void addText(){
       Connection conn=null;
       PreparedStatement ps=null;
       ResultSet rs=null;
       String sql="insert into textdemo values (null,?,?)";
       try{
           conn=JDBCUtils.getConn();
           ps=conn.prepareStatement(sql);
           ps.setString(1, "钢铁是怎样炼成的.txt");
           File file=new File("1.txt");
           ps.setCharacterStream(2, new FileReader(file),(int)file.length());
           ps.executeUpdate();
       }catch(Exception e){
           e.printStackTrace();
       }finally{
           JDBCUtils.close(rs, ps, conn);
       }
    }
    
    @Test
    public void findText(){
         
           Connection conn=null;
           PreparedStatement ps=null;
           ResultSet rs=null;
           String sql="select * from textdemo where id=?";
           try{
               conn=JDBCUtils.getConn();
               ps=conn.prepareStatement(sql);
               ps.setInt(1, 5);
               rs=ps.executeQuery();
               while (rs.next()) {
                String filename=rs.getString("name");
                Reader reader=rs.getCharacterStream("content");
                Writer writer=new FileWriter(filename);
                
                char []cs=new char[1024];
                int i=0;
                while ((i=reader.read(cs))!=-1) {
                    writer.write(cs,0,i);
                }
                reader.close();
                writer.close();
            }
           }catch(Exception e){
               e.printStackTrace();
           }finally{
               JDBCUtils.close(rs, ps, conn);
           }
    }
    }

    二、大二进制存取:

    我们有一个mp3文件,现存入数据库

    代码如下:

    package com.dzq.lob;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    import org.junit.Test;
    
    import com.dzq.util.JDBCUtils;
    
    public class BlobDemo1 {
     @Test
     public void addBlob(){
         Connection conn=null;
           PreparedStatement ps=null;
           ResultSet rs=null;
           String sql="insert into blobdemo values (null,?,?)";
           try{
               conn=JDBCUtils.getConn();
               ps=conn.prepareStatement(sql);
               ps.setString(1, "洛天依.mp3");
               File file=new File("1.mp3");
               ps.setBinaryStream(2, new FileInputStream(file),(int)file.length());
               ps.executeUpdate();
           }catch(Exception e){
               e.printStackTrace();
           }finally{
               JDBCUtils.close(rs, ps, conn);
           }
         
     }
     @Test
     public void findBlob(){
         Connection conn=null;
           PreparedStatement ps=null;
           ResultSet rs=null;
           String sql="select * from blobdemo";
           try{
               conn=JDBCUtils.getConn();
               ps=conn.prepareStatement(sql);
               rs=ps.executeQuery();
               while (rs.next()) {
                String filename=rs.getString("name");
                InputStream in=rs.getBinaryStream("content");
                OutputStream out=new FileOutputStream(filename);
                
                byte []bs=new byte[1024];
                int i=0;
                while ((i=in.read(bs))!=-1) {
                    out.write(bs,0,i);
                }
                in.close();
                out.close();
            }
           }catch(Exception e){
               e.printStackTrace();
           }finally{
               JDBCUtils.close(rs, ps, conn);
           }
     }
    }

    三、其中出现的问题见链接:

    使劲点我啊

  • 相关阅读:
    php ReflectionObject类
    is_callable
    Zend Framework: Accessing Request, Response & Router Object from anywhere
    (转)zend异常处理
    call_user_func
    zend framework基础教程6—视图
    php func_get_arg
    zend framework基础教程3—创建index.php
    【算法02】3种方法求解斐波那契数列
    【算法01】寻找丑数
  • 原文地址:https://www.cnblogs.com/xiaoduc-org/p/5369319.html
Copyright © 2011-2022 走看看