读取sql2000特殊数据类型--image,text

已知:在SQL2000中表imageStore结构如下:

id int 自动增长

photo image 存取图片的二进制数据

remark text 图片备注

 

1、读取image字段

     写一个servlet专门用来显示图片,代码如下:

      import java.io.IOException; import java.io.InputStream; import java.io.*; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; public class GetImage extends HttpServlet{ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id=request.getParameter("id"); if(id==null || id.equals("")){ PrintWriter toClient = response.getWriter(); response.setContentType("text/html;charset=gb2312"); toClient.write("无法打开图片!"); toClient.close(); } else{ Context ctx; try { ctx = new InitialContext(); Context envctx = (Context) ctx.lookup("java:comp/env"); DataSource ds = (DataSource) envctx.lookup("jdbc/intShopping"); Connection con=ds.getConnection(); PreparedStatement psmt=con.prepareStatement("select photo from imageStore where id=?"); psmt.setInt(1, Integer.parseInt(id)); ResultSet rs=psmt.executeQuery(); rs.next(); InputStream in=rs.getBinaryStream(1); response.setContentType("image/jpeg;charset=gb2312"); OutputStream toClient=response.getOutputStream(); byte[] data=new byte[1024]; int len; while((len=in.read(data))!=-1){ toClient.write(data,0,len); } in.close(); rs.close(); psmt.close(); toClient.close(); } catch (NamingException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } } }

  调用:

  1。out.println("<img src=/"http://localhost:8080/ch12/getImage?id="+id+"/">");

  2。<img src=/"http://localhost:8080/ch12/getImage?id=<%=id%/">

 

 

2、读取text字段

  第一种方法:out.println(rs.getObject(colName));

  第二种方法:

                 public static String getClobString(ResultSet rs, String col) { try { Reader reader = rs.getCharacterStream(col); if (reader == null) { return null; } StringBuffer sb = new StringBuffer(); char[] charbuf = new char[4096]; for (int i = reader.read(charbuf); i > 0; i = reader.read(charbuf)) { sb.append(charbuf, 0, i); } return sb.toString(); } catch (Exception e) { return ""; } }

 

 

 

你可能感兴趣的:(sql,exception,String,image,null,import)