每次在运行的运行的时候,都会出错误
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*" %>
<jsp:useBean id="login" scope="page" class="javafan.conns"/><%ResultSet rs=login.executeQuery("select * from admin");
while(rs.next()){
  out.print(rs.getString("username")+"&nbsp;&nbsp;");
  out.print(rs.getString("password")+"&nbsp;&nbsp;");
  out.println("<br>");
}
%>
conns.javapackage javafan;
import java.sql.*;
public class conns {
 Connection conn=null;
 ResultSet rs;
String user ="sa"; 
String password ="123"; 
String sql;
 String url ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=guestbook"; 
  public conns()  
{
try{ 
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
  System.out.println("数据库连接成功!"); } 
catch(Exception e) 

e.printStackTrace(); 
  System.out.println("数据库连接失败"); 
}
   }
  
  public ResultSet executeQuery(String sql)throws Exception{
conn = DriverManager.getConnection(url,user,password); 
            Statement stmt=conn.createStatement();
            rs=stmt.executeQuery(sql);
stmt.close();
conn.close();
System.out.println("<br>数据库表打开!");
        return rs;
    }
}错误提示:exception :org.apache.jasper.JasperException: An exception occurred processing JSP page /C.jsp at line 8Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

解决方案 »

  1.   

    你在bean里面不要返回resultset,用一个list把数据取出来再返回。
      

  2.   

    另外定义一个bean用于保存需要发送到页面的字段:
    public class Admin
    {
      private String userName;
      private String password;
      public String getUserName()
      {
        return userName;
      }
      public void setUserName(String userName)
      {
        this.userName = userName;
      }
      public String getPassword()
      {
        return password;
      }
      public void setPassword(String password)
      {
        this.password = password;
      }
    }
    修改executeQuery方法:
    public List executeQuery(String sql)
      {
        conn = DriverManager.getConnection(url,user,password);  
        Statement stmt=conn.createStatement(); 
        rs=stmt.executeQuery(sql);
        List results = new ArrayList();
        while(rs.next())
        {
          Admin bean = new Admin();
          bean.setUserName(rs.getString("username"));
          bean.setPassword(rs.getString("password"));
          results.add(bean);
        }
        stmt.close(); 
        conn.close(); 
        System.out.println(" <br>数据库表打开!"); 
        return results; 
      }
    页面中用List引用获取返回值:List results = login.executeQuery("select * from admin"); 
    Iterator it = results.iterator();
    while(it.hasNext())
    {
       Admin admin = (Admin)it.next();
       out.print(admin.getUserName());
       out.print(admin.getPassword());
    }
      

  3.   

    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();  
    这里需要newInstance()吗看下你的SQLServerDriver在jar包里的路径 我用的是1.2的jdbc sqlserver在jdbc前面
    sqljdbc.jar\com\microsoft\sqlserver\jdbc - ZIP 压缩文件, 解包大小为 981,989 字节
      

  4.   

    异常信息不够,所以不好判断哪里出了问题,代码没有什么大问题啊Jsp编译出错,有可能是环境配置的问题,你的异常信息就这些么?
      

  5.   

    我把stmt.close();和conn.close();去掉了之后还有出现原来的错误,但是我把bean中的程序(还是类的形式)修改后放入JSP中之后,就可以正常运行了,不知道什么原因,请指教!!!
      

  6.   

     public conns()   

    try{  
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();  
      System.out.println("数据库连接成功!");  }  
    你只加载了驱动,还没连接成功呢`````