分享

oracle中如何取出BLOB类型的值

 凤舞天煌 2007-06-20
下面是一段JSP代码
<%@ page language="java" import="java.sql.*,java.util.*"%>
<%@ page language="java" import="oracle.sql.*"%>
<%
   String image_id ="1";
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();  
   String url="jdbc:oracle:thin:@172.18.16.68:1521:rz817";
   //orcl为你的数据库的SID
   String user="hr_system";
   String password="manager";
   Connection conn= DriverManager.getConnection(url,user,password);  
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery("SELECT * FROM tfile WHERE id = " + image_id); 
   java.io.File fileout=new java.io.File("e:/img.jpg");
   FileOutputStream op = new FileOutputStream(fileout);
   int length = 0;
  
   if (rs.next()){
       String dim_image = rs.getString("filename");      
       BLOB blocco = (BLOB)rs.getObject("info");
       length = (int)blocco.length();      
       byte [] byte_array  = blocco.getBytes(1, length);
       for(int i=0;i<byte_array.length;i++)
    {
    op.write(byte_array[i]);
    }
     /*
       for(int i=0;i<blocco.length;i++){
            op.write(blocco[i]);
        }
       */
   }
   op.close() ;  
  
   rs.close();
   stmt.close();
   conn.close();  
%>
此处可取出BLOB的值,如果想让JSP直接显示出图片,用以下的代码:
<%@ page import="com.chinsoft.web.ClientAccesss.ClientLanMuAccess"%>
<%@ page import="com.chinsoft.dataplat.access.CommonAccess"%>
<%@ page import="java.io.*,java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*"%>
<%@ page import="java.sql.*,java.sql.ResultSet"%>
<%@ page import="com.evsoft.file.*" %>
<%@ page import="com.evsoft.db.*" %>
<%@ page import="com.evsoft.util.*" %>
<%@ page import="java.sql.*" %>  
<%
 ClientLanMuAccess Access=new ClientLanMuAccess();
 int data_num=Access.GetReportMaxID(request.getParameter("FileID"));
 int intpage = 1;
 String FileID=request.getParameter("FileID");
 if (request.getParameter("page") != null)
    intpage = Integer.parseInt(request.getParameter("page"));
                Connection conn=null;
                ResultSet rs=null;
                PreparedStatement ps=null;
try
{
        conn = new CommonAccess().createConnection();
        //ps =conn.prepareStatement( "Select Report_Img from WEB_Report Where Report_ID="+intpage+" and LIEBIAO_ID="+FileID+" ");
        ps =conn.prepareStatement( "select report_img from web_report where liebiao_id=15 and report_id=37");
    rs = ps.executeQuery();
   if (rs != null)
   {     
    System.out.println("sa1");
    while (rs.next())
    {
       System.out.println("sa2");
            ServletOutputStream sout = response.getOutputStream();
            response.setContentType("image/jpeg");
            InputStream in = rs.getBinaryStream(1);
            byte b[] = new byte[0x7a120];
            for(int i = in.read(b); i != -1;)
           {
             sout.write(b);
             in.read(b);
           }
            in.close();
           sout.flush();
           sout.close();   
    }
    rs.close();
   }
   ps.close();
}
catch (SQLException e)
{
   e.printStackTrace();
}
finally
{
try
{
System.out.println("err_test_sam!222");
  if (rs != null)
   rs.close();
  if (ps != null)
   ps.close();
  if (conn != null)
   conn.close();
   
}
catch (Exception e)
{
 System.out.println("err_test_sam!000");
}
}
%>
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多