以前做图片上传的时候都是把图片的路径存入数据库中,去读取数据的时候,直接获取数据库中的地址就是,可现在需求不同了,想不图片直接存入数据库中BLOB数据库类型中,我迷茫了,不知道怎么把这图片存入数据库中(oracle),更不知道怎么把图片从数据库中度出来,请高手帮帮忙!我把我全部的分都给上了。。

解决方案 »

  1.   

    http://java.chinaitlab.com/base/755373.html
    http://edu.codepub.com/2010/0728/24618.php
      

  2.   

      我用的是Hibernate连接数据库,数据库是用的ORACLE
      

  3.   

    把数据库的类型设置成blob                        Product product = new Product();
    product.setId("001");
    product.setName("hibernate 3.5"); BufferedInputStream bis = new BufferedInputStream(
    new FileInputStream("d:/A.jpg"));
    BufferedReader br = new BufferedReader(new InputStreamReader(
    new FileInputStream("d:/B.txt"), "gbk")); product.setDescription(Hibernate.createClob(br, 5000));
    product.setPic(Hibernate.createBlob(bis)); Session session = HibernateSessionFactory.getSession();
    Transaction tx = session.beginTransaction();
    session.save(product);
    tx.commit();
    session.close();
      

  4.   

    再送你个jdbc的。
    写大对象
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Connection conn = null;
        Statement stat = null;
        ResultSet rs = null;
        OutputStream os = null;
        FileInputStream fis = null;
    int bs = 0;
        try {
         Class.forName("oracle.jdbc.driver.OracleDriver");
         conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oraDB","bigfou","---");
         conn.setAutoCommit(false);
         stat = conn.createStatement();
         stat.executeUpdate("insert into t_video(id,video) values(1,empty_blob())");
         
         rs = stat.executeQuery("select video from t_video where id = 1");
         rs.next();
         oracle.sql.BLOB blo = (oracle.sql.BLOB)rs.getBlob(1);
         os = blo.getBinaryOutputStream();
         bs = blo.getBufferSize();
         fis = new FileInputStream("D:\\Temp\\MPlayer-CVS-20040808-K&K\\mplayer.exe");
         byte[] buf = new byte[bs];
         int length = 0;
         
         while(true)
         { 
          length = fis.read(buf);
          if(length == -1) break;
          os.write(buf,0,length);
         }
         
         os.close();
         os = null;
         fis.close();
         fis = null;
         conn.commit();
         conn.setAutoCommit(true);
         conn.close();
        } catch(Exception ex) {
         ex.printStackTrace();
        }
       }
    读大对象InputStream is = null;
       FileOutputStream fos = null;
       byte[] buf = null;
       int bs = 0;
       
       try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oraDB","bigfou","-");
        conn.setAutoCommit(false);
        stat = conn.createStatement();
        
        rs = stat.executeQuery("select video from t_video where id = 1");
        rs.next();
        oracle.sql.BLOB blo = (oracle.sql.BLOB)rs.getBlob(1);
        bs = blo.getBufferSize();
        buf = new byte[bs];
        int length = 0;
        is = blo.getBinaryStream();
        fos = new FileOutputStream("d:\\test.exe");
        
        while(true) {
         length = is.read(buf);
         if(length == -1) break;
         fos.write(buf,0,length);
        }
        
        fos.close();
        fos = null;
        is.close();
        is = null;
        conn.commit();
        conn.setAutoCommit(true);
        conn.close();
        ...