以下是一个使用Java定时器任务和JDBC从数据库中查询数据的示例代码:

import java.sql.*;
import java.util.Timer;
import java.util.TimerTask;

public class QueryData {
    
    private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String DB_URL = "jdbc:mysql://localhost:3306/mydb";
    private static final String USER = "username";
    private static final String PASS = "password";

    public static void main(String[] args) {
        Timer timer = new Timer();
        timer.schedule(new QueryTask(), 0, 5000);
    }

    static class QueryTask extends TimerTask {
        @Override
        public void run() {
            Connection conn = null;
            Statement stmt = null;
            try {
                Class.forName(JDBC_DRIVER);
                conn = DriverManager.getConnection(DB_URL, USER, PASS);
                stmt = conn.createStatement();
                String sql = "SELECT * FROM mytable WHERE timestamp >= NOW() - INTERVAL 5 SECOND LIMIT 5";
                ResultSet rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    int id = rs.getInt('id');
                    String name = rs.getString('name');
                    Timestamp timestamp = rs.getTimestamp('timestamp');
                    System.out.println('id: ' + id + ', name: ' + name + ', timestamp: ' + timestamp);
                }
                rs.close();
                stmt.close();
                conn.close();
            } catch (SQLException | ClassNotFoundException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (stmt != null) stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                try {
                    if (conn != null) conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

该代码使用java.util.Timer类和java.util.TimerTask类实现了一个定时器任务,每隔5秒钟就会执行一次任务。任务的内容是使用JDBC连接到数据库,并查询前5秒内的数据。查询语句使用了MySQL的NOW()函数和INTERVAL关键字,以及LIMIT关键字来限制返回的结果集的最大数量。查询结果通过ResultSet对象进行处理,最后关闭了数据库连接和资源。

Java 定时器任务:每隔 5 秒从数据库查询数据

原文地址: https://www.cveoy.top/t/topic/mLwN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录