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日

悬赏问题

  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图