首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • strut连接数据库问题 [已结贴,结贴人:Thetan]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 15:44:11 楼主
    请大家看看这是什么原因,本人初学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)

    在其他页面也没数据库里数据的显示,其他功能一切正常,就是连接不上数据库,真的不知道为什么.....

    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 15:50:521楼 得分:10
    jar包放好了吗
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 15:57:462楼 得分:0
    msbase.jar, mssqlserver.jar,msutil.jar3个jar文件放好,随便在baidu下断代码都可以连接成功的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 16:05:323楼 得分:0
    msbase.jar, mssqlserver.jar,msutil.jar3个jar文件都放好了 在Tomcat\common\lib\下
    在C:\Tomcat\webapps\web\WEB-INF\lib下也放了 web为我写的工程文件包
    我用的是SQL SERVER2000 SP3的 不知道是不是这个的问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 16:12:334楼 得分:10
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    这句后面加上.newInstance();试一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 16:15:165楼 得分:30
    com.gton.bean.db.DataBean.isHasName(DataBean.java:206)

    去看看第206行发生了什么!?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 16:38:246楼 得分:0
      /////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////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中没抱错,反正就是连接不上数据库,页面都能正常显示,显示不了任何插入的数据,也注册不了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • interpb
    • 等级:
    发表于:2008-05-11 16:44:027楼 得分:30
    Syatem.out.println(conn==null); //加上这句看看

    prepar = conn.prepareStatement(
                        "select count(*) from Users where Users_Name=?"); // 这是206行代码
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 16:54:328楼 得分:0
    System.out.println(conn==null)加这个也没用,还是一样的异常,对象conn应该不能空的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • interpb
    • 等级:
    发表于:2008-05-11 17:18:479楼 得分:0
    我的意思是加上这句

    看conn是不是位null

    加上后 打印的是 true 还是false
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 17:21:1310楼 得分:0
    数据库驱动类是否放在了应用程序lib目录下了?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 17:45:2111楼 得分:0
    引用 9 楼 interpb 的回复:
    我的意思是加上这句

    看conn是不是位null

    加上后 打印的是 true 还是false


    这个我知道,conn对象没连接上数据库,不光注册的页面不行 所有需要数据库调用的登陆页面也不行了
    我想知道的是什么原因 因为我sql server服务也开了 在企业管理器中数据库也做好了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 18:51:1712楼 得分:0
    各位哥哥 姐姐 我的问题终于解决了 搞得我死了好多脑细胞
    下面我说说问题原因 请大家不要犯这方面的低级错误:
    我针对我的原因写了个数据库连接代码 调式后出现下面的错误:
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用
    户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。 经过看资料知道根本原因:

    访问数据库的用户有登录权限,但无操作表的权限

    解决办法:原来我登陆sql server用的是仅windows验证
    后来我把 安全性-身份验证改为sql server和windows认证
    一切就OK了


    谢谢回答我问题和给予我帮助的所有的人。

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 10:10:3013楼 得分:10
    打补丁没,设置jar文件的路径没?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 10:14:4814楼 得分:10
    看看你那报空指针异常的地方
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved