每隔5秒用java扫描一次表sql

时间:2017-05-07 05:29:07

标签: java sql

任何人都可以帮助我,如何在java中创建一个函数来每隔5秒进行一次扫描,以了解在mysql表中输入的新数据是否存在。

2 个答案:

答案 0 :(得分:1)

如果您只需要java解决方案,可以使用timer& amp;计时器任务由java提供。

这是代码。

    java.util.TimerTask task = new java.util.TimerTask() {
        int prevCount = 0; // you can declare it static
        @Override
        public void run() {
            Connection conn = getConnection();
            try {
                ResultSet rs = conn.prepareStatement("Select Count(*) from table").executeQuery();
                int count = rs.getInt(1);
                System.out.println("Count diff:"+ (prevCount-count));
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    };
    java.util.Timer timer = new java.util.Timer(true);// true to run timer as daemon thread
    timer.schedule(task, 0, 5000);// Run task every 5 second
    try {
        Thread.sleep(60000); // Cancel task after 1 minute.
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    timer.cancel();

答案 1 :(得分:0)

您不需要Java程序来扫描数据库中的更改,除了冗余之外,网络和数据库的成本也很高,实现已经作为标准解决方案提供的功能并不是一个好习惯。 / p>

CREATE TRIGGER `some_update_happened` BEFORE/AFTER INSERT/UPDATE/DELETE
ON `mydb`.`mytable`
FOR EACH ROW BEGIN
    // your code here for db trigger calling java function
END;

您可以使用数据库更新触发器参考this link& this link。 在实现触发器后,我想你需要使用在php,java等中实现的服务来捕获触发器。你需要实现事件监听器来接收触发器自动化。就像完成here for PHP一样,oracle文档中也有example,但这适用于Oracle。这是java+mysql中的一个示例。

我知道你是初学者,只是一步一步地走错误,你会到达那里。祝好运。