Java 定时器任务:每隔 5 秒从数据库查询数据
以下是一个使用 Java 定时器任务和 JDBC 来每隔 5 秒从数据库中查询前 5 秒内的数据的示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Timer;
import java.util.TimerTask;
public class DatabaseQueryTask extends TimerTask {
private static final String JDBC_DRIVER = 'com.mysql.jdbc.Driver';
private static final String DB_URL = 'jdbc:mysql://localhost/mydatabase';
private static final String USER = 'username';
private static final String PASS = 'password';
private static final long QUERY_INTERVAL = 5000; // 5 秒
@Override
public void run() {
try {
Connection conn = null;
Statement stmt = null;
try {
// Register JDBC driver
Class.forName(JDBC_DRIVER);
// Open a connection
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// Execute a query
String sql = 'SELECT * FROM mytable WHERE timestamp >= DATE_SUB(NOW(), INTERVAL 5 SECOND) LIMIT 5';
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
// Process the result set
while (rs.next()) {
// Do something with the data
System.out.println(rs.getString('column1'));
}
} finally {
// Close resources
if (stmt != null) stmt.close();
if (conn != null) conn.close();
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// Start the timer
Timer timer = new Timer();
timer.schedule(new DatabaseQueryTask(), 0, QUERY_INTERVAL);
}
}
在上面的示例中,我们创建了一个DatabaseQueryTask类,它是一个TimerTask子类,用于执行JDBC查询任务。我们在run()方法中定义了JDBC连接和查询逻辑。这里我们使用java.sql包中的类来执行查询。查询语句使用DATE_SUB()函数来查询最近5秒的数据,然后用LIMIT子句限制结果集的大小为5。查询结果使用ResultSet对象来处理。
在main()方法中,我们创建了一个Timer对象并调用它的schedule()方法来启动定时器任务,该任务将每隔5秒钟执行一次。
请注意,这只是一个示例代码,需要根据实际需求进行修改。例如,您需要更改JDBC连接字符串、用户名、密码、表名、列名等来适应您自己的数据库环境。
原文地址: https://www.cveoy.top/t/topic/mLwP 著作权归作者所有。请勿转载和采集!