每当表更改时从MySQL表中读取数据

时间:2014-05-15 12:06:35

标签: java mysql updates

我有一个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条件失败则会出现并停止读取。

3 个答案:

答案 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
}

并将其放在一个帖子中,否则会阻止你的主程序。