请大家看看这是什么原因,本人初学struts。
这是连接数据库的bean代码:
package com.gton.bean.db;import java.sql.*;
import com.gton.bean.*;
import com.gton.util.*;
import java.util.*;public class DataBean {
    private Connection conn = null;    private ResultSet res = null;    private java.sql.PreparedStatement prepar = null;    private java.sql.CallableStatement proc = null;    public int pagecount = 0;
    public DataBean() { //构造函数
        try {
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            conn = DriverManager
                   .getConnection(
                           "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=book",
                           "sa", "");
            System.out.println("连接成功");
        } catch (SQLException ex) {
            System.out.println(ex.getMessage() + "路径错误");
        } catch (ClassNotFoundException ex) {
            System.out.println(ex.getMessage() + "驱动错误");
        }    }    public void Close() { //关闭方法
        try {
            if (res != null) {
                res.close();
            }
            if (prepar != null) {
                prepar.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        System.out.println("关闭成功");
    }在tomcat5.5中报错:
The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
com.gton.bean.db.DataBean.isHasName(DataBean.java:206)
com.gton.bean.db.DataBean.HasName(DataBean.java:224)
com.gton.formbean.UsersRegForm.validate(UsersRegForm.java:90)
org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:921)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:206)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1158)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.gton.tookit.StringFilter.doFilter(StringFilter.java:22)在其他页面也没数据库里数据的显示,其他功能一切正常,就是连接不上数据库,真的不知道为什么.....

解决方案 »

  1.   

    msbase.jar, mssqlserver.jar,msutil.jar3个jar文件放好,随便在baidu下断代码都可以连接成功的
      

  2.   

    msbase.jar, mssqlserver.jar,msutil.jar3个jar文件都放好了 在Tomcat\common\lib\下
    在C:\Tomcat\webapps\web\WEB-INF\lib下也放了 web为我写的工程文件包
    我用的是SQL SERVER2000 SP3的 不知道是不是这个的问题
      

  3.   

    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
    这句后面加上.newInstance();试一下
      

  4.   

    com.gton.bean.db.DataBean.isHasName(DataBean.java:206) 去看看第206行发生了什么!?
      

  5.   

      /////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////User注册方法/////////////////////////////////////////////////
        public boolean regUser(UserBean ub) {
            try {
                prepar = conn.prepareStatement(
                        "insert into Users (Users_Name,Users_Pwd,Users_Class,Users_Sex,Users_Count,Users_Phone,Users_Adds) values(?,?,?,?,?,?,?)");
                prepar.setString(1, ub.getUsers_Name());
                prepar.setString(2, ub.getUsers_Pwd());
                prepar.setString(3, ub.getUsers_Class());
                prepar.setString(4, ub.getUsers_Sex());
                prepar.setInt(5, ub.getUsers_Count());
                prepar.setString(6, ub.getUsers_Phone());
                prepar.setString(7, ub.getUsers_Adds());
                int flag = prepar.executeUpdate();
                if (flag == 0) {
                    return false;
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
                return false;
            }
            return true;    }    public boolean isHasName(String userName) {
            try {
                prepar = conn.prepareStatement(
                        "select count(*) from Users where Users_Name=?"); // 这是206行代码
                prepar.setString(1, userName);
                res = prepar.executeQuery();
                res.next();
                if (res.getInt(1) != 0) {
                    return false;
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
                return false;
            } finally {
                this.Close();
            }
            return true;
        }    public static boolean HasName(String userName) {        return new DataBean().isHasName(userName);
        }
    这是注册用户代码,在eclipse中没抱错,反正就是连接不上数据库,页面都能正常显示,显示不了任何插入的数据,也注册不了
      

  6.   

    Syatem.out.println(conn==null); //加上这句看看  prepar = conn.prepareStatement( 
                        "select count(*) from Users where Users_Name=?"); // 这是206行代码 
      

  7.   

    System.out.println(conn==null)加这个也没用,还是一样的异常,对象conn应该不能空的
      

  8.   

    我的意思是加上这句看conn是不是位null加上后 打印的是 true 还是false
      

  9.   

    数据库驱动类是否放在了应用程序lib目录下了?
      

  10.   


    这个我知道,conn对象没连接上数据库,不光注册的页面不行 所有需要数据库调用的登陆页面也不行了 
    我想知道的是什么原因 因为我sql server服务也开了 在企业管理器中数据库也做好了
      

  11.   

    各位哥哥 姐姐 我的问题终于解决了 搞得我死了好多脑细胞
    下面我说说问题原因 请大家不要犯这方面的低级错误:
    我针对我的原因写了个数据库连接代码 调式后出现下面的错误:
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用
    户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。 经过看资料知道根本原因:访问数据库的用户有登录权限,但无操作表的权限解决办法:原来我登陆sql server用的是仅windows验证 
    后来我把 安全性-身份验证改为sql server和windows认证 
    一切就OK了谢谢回答我问题和给予我帮助的所有的人。
      

  12.   

    打补丁没,设置jar文件的路径没?