-1

当用户注销或登录计算机时,我试图将时间存储到数据库中,但是当我注销计算机时,它不会将当前时间存储到数据库中,如果我按下ctrl+c控制台或终止程序从 NETBEANS 它也存储注销时间。我在哪里做错了?这个你能帮我吗。下面是我的代码。先感谢您。

  public void logoutTime() throws Exception {

    Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
        @Override
        public void run() {

            SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm:ss");
            String time = String.format(sdf1.format(calendar.getTime()));

            Globals.globalClockBean.setLogout_time(time);
            try {
                cd.insert(Globals.globalClockBean);
            } catch (Exception ex) {
                Logger.getLogger(ClockController.class.getName()).log(Level.SEVERE, null, ex);
            }
            System.out.println("Closing: Logged out at yayyyyyyyyy: " + time);

            System.out.println(sdf1.format(calendar.getTime()));
        }

    }));
4

2 回答 2

3

我的猜测是,当您注销时,操作系统会在调用 JMV 关闭挂钩之前关闭数据库。因此,当您尝试调用数据库时,它实际上已关闭。

尝试设置文件记录器并检查从计算机注销后是否记录了异常。我的猜测是会有一些“连接失败”类型的异常

于 2016-11-08T10:52:41.240 回答
1

当您简单地从您的计算机注销时,jvm 不会关闭,则不会调用挂钩。

于 2016-11-08T12:19:35.520 回答