当前位置:编程学习 > JAVA >>

jsp实现添加视频文件到oracle数据库的blob字段

jsp实现添加视频文件到oracle数据库的blob字段,求实现方法 --------------------编程问答-------------------- 视频流文件转换成byte数组 --------------------编程问答-------------------- 你先获取视频流,然后自己封装一把持久化到 blob --------------------编程问答-------------------- 参考下吧:

import java.io.BufferedInputStream;   
import java.io.FileInputStream;   
import java.io.PrintStream;   
import java.sql.Connection;   
import java.sql.DriverManager;   
import java.sql.ResultSet;   
import java.sql.SQLException;   
import java.sql.Statement;   
  
public class Test {   
    private Connection conn;   
  
    /**  
     * 得到一个数据库的连接  
     *   
     * @return 返加Connection对象  
     */  
    public Connection getConnection() {   
        try {   
            Class.forName("oracle.jdbc.driver.OracleDriver");   
            conn = DriverManager.getConnection(   
                    "jdbc:oracle:thin:@localhost:1521:lyx", "scott", "tiger");   
        } catch (ClassNotFoundException e) {   
            // TODO Auto-generated catch block   
            e.printStackTrace();   
        } catch (SQLException e) {   
            // TODO Auto-generated catch block   
            e.printStackTrace();   
        }   
        return conn;   
    }   
  
    /**  
     * 向表中插入图片  
     *   
     * @param path图片所在的路径  
     * @return 整形 判断成功或失败  
     */  
    public int insertImage(String path) throws Exception {   
        int i = 0;   
        Statement st = null;   
        ResultSet rs = null;   
        conn=this.getConnection();   
           
        conn.setAutoCommit(false);//设置数据库为不自动提交,必须的一步   
        st = conn.createStatement();   
        //先插入一个空对象,这里我调用了Empty_BLOB()函数   
        i = st.executeUpdate("insert into image (id,image) values (seq1.nextval,Empty_BLOB())");   
        //以行的方式锁定   
        rs = st.executeQuery("select image from image where id=(select max(id) from image) for update");   
        if (rs.next()) {   
            //得到流   
            oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1);   
            //从得到的低级流构造一个高级流   
            PrintStream ps = new PrintStream(blob.getBinaryOutputStream());   
            BufferedInputStream bis = new BufferedInputStream(   
                    new FileInputStream(path));   
            byte[] buff = new byte[1024];   
            int n = 0;   
            //从输入到输出   
            while ((n = bis.read(buff)) != -1) {   
                ps.write(buff, 0, n);   
  
            }   
            //清空流的缓存   
            ps.flush();   
            //关闭流,注意一定要关   
            ps.close();   
            bis.close();   
        }   
        rs.close();   
        st.close();   
        conn.close();   
        return i;   
    }   
  
    public static void main(String[] args) throws Exception {   
        Test test=new Test();   
        test.insertImage("e:\\3.jpg");   
        System.out.println("OK");   
  
  
    }   
  
}   
--------------------编程问答-------------------- 我也不懂,一起学习 --------------------编程问答-------------------- 神经病  视频文件存放到blob字段中  上传1个1G的视频你传到啥时候去了?
一般的做法是保存到ftp或者服务器本地
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,