m0_62667564 2023-04-17 20:38 采纳率: 84.8%
浏览 36
已结题

调用UserDao里的方法失败

目的:在一个Servlet中使用UserDao的方法从t_user表中查询到所有用户,并将该List集合对象存放在request对象中,最后跳转到users页面
但是调用UserDao类的方法queryAll()时出错。
UserDao类代码(DB类是写好的,数据库也已经连接)

public class UserDao {
    private com.XXX.jdbc.DB db;
    private Connection connection;

    public UserDao(String dbFile) {
        this.db = new com.XXX.jdbc.DB(dbFile);
        this.connection = this.db.getConnection();
    }
    public List<com.XXX.jdbc.User> queryAll() {
        Statement stmt = null;
        ResultSet rs = null;
        ArrayList users = new ArrayList();

        try {
            stmt = this.connection.createStatement();
            String sql = "SELECT * FROM t_user";
            rs = stmt.executeQuery(sql);

            while(rs.next()) {
                com.XXX.jdbc.User user = new com.XXX.jdbc.User();
                user.setId(rs.getInt(1));
                user.setUserName(rs.getString(2));
                user.setPwd(rs.getString(3));
                user.setGender(rs.getString(4));
                user.setCategory(rs.getString(5));
                user.setInterest(rs.getString(6));
                user.setPhoto(rs.getString(7));
                user.setRegTime(new Date(rs.getString(8)));
                users.add(user);
            }

            ArrayList var7 = users;
            return var7;
        } catch (SQLException var10) {
            var10.printStackTrace();
        } finally {
            DB.close((Connection)null, stmt, (ResultSet)null);
        }

        return null;
    }

Servlet代码

public class userList extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        UserDao userDao = new UserDao("text05");
        //查询
        List<User> userList = new ArrayList<>();
        userList = userDao.queryAll();
        //userDao.queryAll();即使只执行该句也会失败,即调用UserDao的方法不成功
        //将list对象存放在request对象中
        req.setAttribute("userList",userList);
        //System.out.println(req.getAttribute("userList"));
        //请求转发
        req.getRequestDispatcher("users.jsp").forward(req,resp);
    }
}

报错500

java.lang.IllegalArgumentException
    java.util.Date.parse(Date.java:617)
    java.util.Date.<init>(Date.java:274)
    com.XXX.jdbc.UserDao.queryAll(UserDao.java:99)
    com.XXX.jdbc.userList.service(userList.java:18)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:582)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

请问这样的错误应该怎么改?

  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2023-04-17 21:02
    关注

    user.setRegTime(new Date(rs.getString(8)));
    这里rs.getString(8)得到的字符串应该不是日期值,导致转换失败。比如为空什么的,这里再加一层try..catch容错

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月25日
  • 已采纳回答 4月17日
  • 创建了问题 4月17日

悬赏问题

  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 Macbookpro 连接热点正常上网,连接不了Wi-Fi。
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程