首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

java 怎的读取 oracle blob数据

2011-11-21 
java 怎样读取 oracle blob数据oracle blob字段中存储的是图片,请问怎样用java 代码读取并在jsp上显示表字

java 怎样读取 oracle blob数据
oracle blob字段中存储的是图片,请问怎样用java 代码读取并在jsp上显示 
表字段 id int 、name varchar2 、content blob 
在此谢过!


[解决办法]

Java code
package test;import java.sql.*;   import java.io.*;   import oracle.sql.*;   public class WriteBlob {       public static void main(String[] args){         try {         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());       Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhos:1251:test","test","test");       conn.setAutoCommit(false);        BLOB blob = null;           PreparedStatement pstmt = conn.prepareStatement("insert into javatest values(?,empty_blob())");         pstmt.setString(1,"test.jpg");      pstmt.executeUpdate();      pstmt.close();        pstmt = conn.prepareStatement("select content from javatest where name= ? for update");      pstmt.setString(1,"test.jpg");      ResultSet rset = pstmt.executeQuery();      if (rset.next()) blob = (BLOB) rset.getBlob(1);          String fileName = "d:/2475.jpg";         File f = new File(fileName);      FileInputStream fin = new FileInputStream(f);        System.out.println("file size = " + fin.available());          pstmt = conn.prepareStatement("update javatest set content=? where name=?");          OutputStream out = blob.getBinaryOutputStream();        int count = -1, total = 0;   //      byte[] data = new byte[(int)fin.available()]; //      fin.read(data); //      out.write(data);               byte[] data = new byte[blob.getBufferSize()]; // 另一种实现方法,节省内存        while ((count = fin.read(data)) != -1) {          total += count;          out.write(data, 0, count);       }                fin.close();      out.close();        pstmt.setBlob(1,blob);      pstmt.setString(2,"fankai");        pstmt.executeUpdate();      pstmt.close();      conn.commit();        conn.close();      } catch (SQLException e) {         System.err.println(e.getMessage());         e.printStackTrace();      } catch (IOException e) {         System.err.println(e.getMessage());      }     }     }
[解决办法]
mark
[解决办法]
循环记录集,取出相应字段的值,在打印在表格内,关于解析大字段可以专门写一个方法,需要显示大字段的时候就调用那个解析方法。
具体解析可以参照楼上的解析方法。
另外如果大字段存储的是图片的话是不能直接在表格中显示的,必须专门做一个页面,在那个页面上解析图片,再把显示位置的地方加载解析图片的
页面,才能显示。

热点排行