我的CLASSPATH设置为C:\Program Files\Java\jdk1.6.0\lib\tools.jar;C:\Program Files\Java\jdk1.6.0\lib\dt.jar;;
JAVA_HOME设为C:\Program Files\Java\jdk1.6.0
path设为%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%JAVA_HOME%\bin;
我装了Microsoft SQL Server 2000 Driver for JDBC并把bin下的文件放到tomcat下的
C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib
和我要用的数据库
C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ch1\WEB-INF\lib下
但我每次只要用到jsp连接SQL2000时都出现类似以下的问题
description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.lang.NullPointerException
bookshop.DBSQLManager.executeUpdate(DBSQLManager.java:56)
org.apache.jsp.adduser1_jsp._jspService(adduser1_jsp.java:126)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
希望大家能帮帮我这个菜鸟!!谢谢
感谢刚才的朋友们的回复但是还是没能解决!!我已经把Microsoft SQL Server 2000 Driver for JDBC里面那三个后缀名为jar的文件放到我的工程里了!!C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ch1\WEB-INF\lib下,ch1时我的工程!!!
DBSQLManager.java程序如下:(如果这里要该的话那么应该怎样改????)
package bookshop;import java.sql.*;
import bookshop.*;public class DBSQLManager{
protected Connection conn = null; //Connection对象
protected Statement stmt = null; //Statement对象
protected ResultSet rs = null; //记录结果集
protected String sqlStr; //SQL语句

public DBSQLManager() {
try
{
sqlStr = "";
DBConnectionManager dcm = new DBConnectionManager();
conn = dcm.getConnection();
stmt = conn.createStatement();
}
catch (Exception e) {
System.out.println(e);
}

} public Statement getStmt() {
return stmt;
} public Connection getConn() {
return conn;
} public ResultSet getRs() {
return rs;
} public void setSqlStr(String newSqlStr) {
this.sqlStr=newSqlStr;
}谢谢!!!
public String getSqlStr() {
return sqlStr;
} public void executeQuery() throws Exception  {
rs = stmt.executeQuery(sqlStr);
}
public void executeUpdate() throws Exception  {
stmt.executeUpdate(sqlStr);
}

public void close() throws SQLException {
if ( stmt != null ) {
stmt.close();
stmt = null;
}
conn.close();
conn = null;
}};

解决方案 »

  1.   

    你的stmt是null,仔细查查。和jar包应该没有关系。
      

  2.   

    你跟踪下。看看数据库连接信息是否传到DBSQLManager 中。调试下就找到原因了。
      

  3.   

    Microsoft SQL Server 2.0驱动(3个jar的那个):
    String Driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";    //连接SQL数据库的方法
    String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name";    //db_name为数据库名
    String Username="username";    //用户名
    String Password="password";    //密码
    Class.forName(Driver).new Instance();    //加载数据可驱动
    怀疑是加载数据库驱动时候有问题
      

  4.   

    org.apache.jsp.adduser1_jsp._jspService(adduser1_jsp.java:126) 问题出现在这里,
    你到Tomcat 6.0\work\Catalina\localhost\下找到你的项目,然后在org\apache\jsp\..下找到adduser1_jsp.java文件,查看第126行有什么错,然后你再看看你的adduser1.jsp有什么错.
      

  5.   

    我adduser1_jsp.java那里没有那么多行啊!!!只有三十二行!!如下
    <%@ page contentType="text/html;charset=gb2312" %>
    <%@ include file="incoming/common.jsp"%>
    <html>
    <head>
    <title>网上书店</title>
    <link href="incoming/style.css" rel="stylesheet" type="text/css">
    </head>
    <body><%@ include file="incoming/header.jsp"%>
    <%
    String userid=new String(request.getParameter("userid").trim().getBytes("ISO-8859-1"));
    String password=new String(request.getParameter("password").trim().getBytes("ISO-8859-1"));
    String username=new String(request.getParameter("username").trim().getBytes("ISO-8859-1"));
    String address=new String(request.getParameter("address").trim().getBytes("ISO-8859-1"));
    String phone=new String(request.getParameter("phone").trim().getBytes("ISO-8859-1"));
    String email=new String(request.getParameter("email").trim().getBytes("ISO-8859-1")); DBSQLManager dbsm=new DBSQLManager();
    String sql="INSERT INTO userpassword VALUES('"+userid+"','"+password+"','N','"+username+"','"+address+"','"+phone+"','"+email+"')";
    dbsm.setSqlStr(sql);
    dbsm.executeUpdate();
    dbsm.close();  
    %>
    <br><a class="title">已经注册成功!请<a href="login.jsp">登录</a></a><br> 
    <center>
    <a href="request1.jsp">查看注册信息</a><br>
    </center>
    <%@ include file="incoming/footer.jsp"%>  </body>
    </html>
      

  6.   

    java写在前台怎么看着都不舒服,你可以在dbsm.setSqlStr(sql); 之前加条语句,把sql输出来,一般用log,故居sql语句出错!!
    另外,那个126行在tomcat的/work/org/apache/......../你的项目下~!
      

  7.   

    这两个方法看着怪怪的
    public void executeQuery() throws Exception  { 
    rs = stmt.executeQuery(sqlStr); 

    public void executeUpdate() throws Exception  { 
    stmt.executeUpdate(sqlStr); 

    你的sqlStr是个全局变量,也没有开辟空间 
      

  8.   

    在org\apache\jsp\..下找到adduser1_jsp.java文件,查看第126!!那里我的语句是:
    DBSQLManager dbsm=new DBSQLManager();
    String sql="INSERT INTO userpassword VALUES('"+userid+"','"+password+"','N','"+username+"','"+address+"','"+phone+"','"+email+"')";
    dbsm.setSqlStr(sql);
    126行: dbsm.executeUpdate();
    dbsm.close();  
    这个跟adduser1_jsp.java也就是我刚发出来的一样啊!!
    DBSQLManager dbsm=new DBSQLManager(); 
    String sql="INSERT INTO userpassword VALUES('"+userid+"','"+password+"','N','"+username+"','"+address+"','"+phone+"','"+email+"')"; 
    dbsm.setSqlStr(sql); 
    dbsm.executeUpdate(); 
    dbsm.close();  
    而且
    DBSQLManager dbsm=new DBSQLManager(); 
    String sql="INSERT INTO userpassword VALUES。
    应该就能把得到的数据放到SQL2000里面了吧(sql2000userpassword这里刚开始是没数据的(因为这个是注册要添加里面的SQL2000的数据)所以
    DBSQLManager.java里面刚开始设为
    protected Statement stmt = null; 然后
    public void executeUpdate() throws Exception  { 
    stmt.executeUpdate(sqlStr); 

    (详细程序就是最上面的那个程序)
      

  9.   

    不对!!!!更正userpassword里面有一个数据
    USER_ID:邝剑炜
    user_password:3105003311
    USER_NAME:邝剑炜