Java語言是一種廣泛應用的高級編程語言,它在數據庫操作方面有其獨特的優勢。在Java中,我們可以通過監聽MySQL數據庫的更新來及時獲取到最新的數據。以下是一個示例:
//導入相關庫 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Timestamp; import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class MysqlListener extends TimerTask { // 定義MySQL數據庫相關的參數 private static final String MYSQL_DRIVER = "com.mysql.jdbc.Driver"; private static final String MYSQL_URL = "jdbc:mysql://localhost:3306/test?characterEncoding=utf8"; private static final String MYSQL_USERNAME = "root"; private static final String MYSQL_PASSWORD = "pwd"; private static final String SELECT_SQL = "select * from tb_name order by id desc limit 1"; // 上次查詢時間,并初始化為當前時間 private Timestamp lastTime = new Timestamp(new Date().getTime()); public void run() { try { Class.forName(MYSQL_DRIVER); Connection conn = DriverManager.getConnection(MYSQL_URL, MYSQL_USERNAME, MYSQL_PASSWORD); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(SELECT_SQL); if (rs.next()) { Timestamp updateTime = rs.getTimestamp("update_time"); if (updateTime != null && updateTime.after(lastTime)) { // 如果有更新或新增行,我們可以做一些操作 System.out.println("發現新數據"); // 更新lastTime lastTime = updateTime; } } rs.close(); stmt.close(); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { Timer timer = new Timer(); timer.schedule(new MysqlListener(), 0, 5000);// 每隔5秒監聽一次數據庫更新 } }
此處使用的是Java的Timer類,每隔5秒監聽一次MySQL數據庫的更新。如果有新增或更新的數據,將會打印“發現新數據”的信息。當然,我們也可以根據實際需求,做一些其他的操作。
在以上的示例中,我們使用Statement來執行SQL語句,獲得查詢結果集后,遍歷結果集,獲取最后一行的更新時間。如果查詢到的更新時間比lastTime新,就說明有新增或更新的數據。
最后值得一提的是,以上示例中使用了Java的JDBC進行數據庫連接,這也是Java操作MySQL數據庫的常見方式。