任何人都可以帮助我,如何在java中创建一个函数来每隔5秒进行一次扫描,以了解在mysql表中输入的新数据是否存在。
答案 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中的一个示例。
我知道你是初学者,只是一步一步地走错误,你会到达那里。祝好运。