给你一个例子看看吧,我也是在论坛找的。测试通过
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import java.util.*;
import javax.naming.*;
public class SData extends HttpServlet {
    java.sql.Connection conn = null;
    java.sql.Statement stmt  = null;
    java.sql.Blob imageBlob = null;
    public void service(HttpServletRequest request,HttpServletResponse response) 
            throws ServletException,IOException {
            //    PrintWriter out = response.getWriter();
                request.setCharacterEncoding("GBK");  
                response.setContentType("text/html");
    try { 
        //out.println("<html>");
           Context ctx = null;
           Hashtable ht = new Hashtable();
             ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
             ht.put(Context.PROVIDER_URL,"t3://127.0.0.1:7001");
             ctx = new InitialContext(ht);
             javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup ("minko_pool");
             conn = ds.getConnection();
             stmt = conn.createStatement();
             try {
              ResultSet  rs=stmt.executeQuery("select * from PIC1 ");
              response.setContentType("images/jpg");
              while (rs.next()) {            
              //imageBlob = rs.getBlob("PIC");
               // InputStream is = imageBlob.getBinaryStream();
              //  int arrlength = (int)imageBlob.length();
         //byte[] arr = new byte[arrlength];
         //is.read(arr);
         //response.setContentType("image/jpeg");  
         //OutputStream toClient=response.getOutputStream(); 
         //toClient.write(arr);
         //toClient.close();
         //stmt.close();}
         //rs.close();
         //DataOutputStream os = new DataOutputStream( response.getOutputStream() );
              //  InputStream  in  =  rs.getBinaryStream(1);
             //   byte[]  b  =  new  byte[8192];    
             //   int  len;    
           //     while ((len = in.read(b)) !=-1)
           //      {
           //        os.write(b,0,len); }
           //        in.close(); 
           InputStream  in = rs.getBinaryStream("PIC"); 
           response.setContentType("image/jpeg");    
           byte[] b=new  byte[1024];    
           int  len;    
           while((len=in.read(b))>0)   { response.getOutputStream().write(b,0,len);}
                           }
                 rs.close();
                 conn.close();
                 }catch (SQLException e) {System.out.println("DB Error   "+e.getMessage());}
         }catch (Exception e) {
        System.out.println("Exception was thrown: " + e.getMessage());
         }
//out.println("</html>");  
  }
}

解决方案 »

  1.   

    谢谢: minkoming(学无止境) 。
    但我的程序也是测试通过的。只不过要用odbc数据源,连接代码如下:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     Connection conn = DriverManager.getConnection("jdbc:odbc:dns","user","pass");
    Statement stmt=conn.createStatement(ResultSet.TYPE_FORWARD_ONLY ,ResultSet.CONCUR_UPDATABLE);
    其他的代码部分一样,我不知道用JDBC连数据库还需要配置什么参数。大家帮忙看看,多谢了
      

  2.   

    你的连接没有错,但是取数据时需要转换字符编码的。  public String ConvertChinese(InputStream isstr)throws IOException
      {
        byte buff[] = new byte[300];
        StringBuffer resultBuffer = new StringBuffer();
        while(isstr.read(buff) != -1);
        resultBuffer.append(new String(buff));
        return resultBuffer.toString();
       }InputStream fin = rs.getAsciiStream(2);
    try{
      out.println("<td>"+ConvertChinese(fin).trim()+"</td>");
    }catch(Exception e){
      out.println("IO发生错误:"+e.getMessage());
    }