package test;
import java.sql.*;
public class SQLConnection {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:sync";
Connection connect = null;
    ResultSet rs = null;
String username="sa",psw="sa";
//String dbo= null;
// Connection dbo=null;
//ResultSet
public SQLConnection() {
//String sConnStr = "jdbc:odbc:sync";
try {
Class.forName(sDBDriver); 
//DriverManager.getConnection(sConnStr,username,psw); //sqlConn=java.sql.DriverManager.getConnection(strConn,sa,psw);
      }
catch(java.lang.ClassNotFoundException e) {
System.err.println( e.getMessage());
}
//return Class.GetReflectionFactoryAction;

} public ResultSet executeQuery(String sql)
                {
try {
connect = DriverManager.getConnection(sConnStr,username,psw); 
Statement stmt = connect.createStatement();
  rs = stmt.executeQuery(sql);
    } 
catch(SQLException ex)
                        { 
System.err.println(ex.getMessage());
      }
return rs;
}
这是页面调用JavaBean
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import ="test.SQLConnection"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<jsp:useBean id="ss" class="test.SQLConnection"></jsp:useBean>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>
<%
String strsql="select * from usefinfo";
ResultSet rs =ss.executeQuery(strsql);
while(rs.next())
{
out.println("sdf");
}
if(rs==null)
{out.print("null");}%>
</body>
</html>这是页面报错:
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NullPointerException
org.apache.jsp.list_jsp._jspService(list_jsp.java:65)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

解决方案 »

  1.   

    你普通jsp能运行吗?应该是应用服务器配置错误。你贴出来的bean少一半大括号。
      

  2.   

    try {
    Class.forName(sDBDriver); 
    //DriverManager.getConnection(sConnStr,username,psw); //sqlConn=java.sql.DriverManager.getConnection(strConn,sa,psw);
          }
    catch(java.lang.ClassNotFoundException e) {
    System.err.println( e.getMessage());
    }
    //return Class.GetReflectionFactoryAction;这一段不要写在构造函数里面,写到executeQuery方法里面
      

  3.   

    你确定SQLConnection类的路径如下:WEB-INF/classes/test/SQLConnection.class
      

  4.   

    嗯!是的。普通页面可以运行的。
    路径是。WEB-INF/classes/test/SQLConnection.class
    这个类SQLConnection.class调用其它类可以成功连接到数据库并且能查到数据库。
    还在。。
    我通面页来声明连接数据库是可以运的。<%//@ page import="java.lang.*, java.io.*, java.sql.*, java.util.*" contentType="text/html;charset=gb2312" %>
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
    <%@ page import ="java.io.*"%>
    <%@ page import ="java.lang.*"%>
    <%@ page import ="java.util.*"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html><head><title></title></head>
      <body>
      <%
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=sync";
    String user="sa";
    String password="sa";
    Connection conn= DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
     //String sql="select * from userinfo";
      String sql="select * from userinfo";
      //ResultSet rs=stmt.executeQuery(sql);
      ResultSet rs =stmt.executeQuery(sql);
      while(rs.next())
      {
      out.print(rs.getString(2)+"<br/>");
      }
     %></body>
      </html> 
    能成功连接到数据库并有结果输出如果我用SQLConnection.class来做为Bean的就不行。
    不知道怎么回事。
    以前是可以的。只最最近我装了系统。现在不能连上了。。求助。。也不知道是我的路径的问题
    还是我环境变量配错了
    郁闷当中。。
      

  5.   

    代码本身好象没错误..是不是路径问题啊.倒入class的时候
      

  6.   

    <jsp:useBean id="ss" class="test.SQLConnection"></jsp:useBean>
    还差一个属性scope=page/session
      

  7.   

    页面报错不是说了吗  list_jsp.java这个文件的65行有错 你在看看
      

  8.   

    我用你的代码,除.java的一半括号,url什么的外,我用mysql和resin测试通过。
      

  9.   

    根据我的经验,把Tomcat文件夹或者list_jsp.java这个文件删除掉,再编译运行一次
      

  10.   

    java.lang.NullPointerException
    org.apache.jsp.list_jsp._jspService(list_jsp.java:65)找到list_jsp.java看看65行出了什么毛病