我有一个MySQL数据库,其中包含一个表,其中新数据被转储。现在我已经创建了一个java程序来读取表数据。插入表中的数据的性质有时会不断得到添加,有时会在间隔后添加。虽然我的要求是在Java应用程序中添加数据后立即从中读取数据..
只要将新数据添加到表中,我就需要通过我的java程序读取它并处理它。另外,我只需要阅读新行..
这是我的java类代码..
private void Readdata(ResultSet resultSet) throws SQLException {
while (resultSet.next()) {
Date date = resultSet.getDate("datum");
String comment = resultSet.getString("comments");
}
}
在此代码中,如果while条件失败则会出现并停止读取。
答案 0 :(得分:1)
您可以根据需要创建一个cron作业并将其设置为在间隔中检查数据库。 您可以使用quartz-2.2.0.jar或类似的库来处理cron表达式。 创建一个作业并在其中插入您的数据读取代码。 你也可以在mysql中使用Trigger。
答案 1 :(得分:1)
如何使用计时器任务和ScheduledExecutorService
定期检查更新
您需要扩展java.util.TimerTask。
你还需要一个匿名的内心'运行'类。
然后,您需要设置java.util.concurrent.ScheduledExecutorService。 (更多信息http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html)
scheduleAtFixedRate(timerTask, 0, 4, TimeUnit.HOURS); = scheduleAtFixedRate(Runnable command, long delay,long time, TimeUnit unit)
public class MyClass extends TimerTask{
public void StartScheduledCheck(){
TimerTask timerTask ;
ScheduledExecutorService scheduledExecutorService =
Executors.newScheduledThreadPool(5);
Timer timer = new Timer(true);
timerTask = new MyClass();
ScheduledFuture scheduledFuture =
scheduledExecutorService.scheduleAtFixedRate(timerTask, 0, 4, TimeUnit.HOURS);
}
public void run(){
//Call sql class here
}
}
这将每四个小时执行一次此任务。您可以将其更改为秒或分钟。
答案 2 :(得分:0)
试试这个:
您从mysql表中收到一次数据,并将其存储在列表中。现在检查表中是否有列表长度为id的项目。如果是,您有一个新项目。如果不是,表中没有新项目。 这背后的编码非常简单。如果你想永远循环,请使用:
while(running){ //where running is a boolean value
//check for new entries
}
并将其放在一个帖子中,否则会阻止你的主程序。