Java 定时器任务:每隔 5 秒从数据库查询数据
以下是一个使用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对象进行处理,最后关闭了数据库连接和资源。
原文地址: https://www.cveoy.top/t/topic/mLwN 著作权归作者所有。请勿转载和采集!