目录

在这里插入图片描述
欢迎关注微信公众号:数据科学与艺术 作者WX:superhe199

在Java中,可以使用JDBC和JDK提供的API来监听SQL Server数据库的变化。下面是一个示例代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
import java.util.Timer;
import java.util.TimerTask;

public class SQLServerChangeListener {
    private static final String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    private static final String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=your_database_name";
    private static final String USER = "your_username";
    private static final String PASS = "your_password";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            stmt = conn.createStatement();

            // 执行查询语句
            String sql = "SELECT * FROM your_table_name";
            rs = stmt.executeQuery(sql);

            // 获取初始数据
            while (rs.next()) {
                // 处理查询结果
            }

            // 使用定时器定时查询数据库变化
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    try {
                        rs = stmt.executeQuery(sql);
                        while (rs.next()) {
                            // 处理查询结果
                        }
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }, 1000, 1000); // 每隔1秒查询一次

            // 程序运行一段时间后,关闭连接
            Thread.sleep(60000);
            timer.cancel();
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException | ClassNotFoundException | InterruptedException e) {
            e.printStackTrace();
        } finally {
            try {
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

在上面的示例中,我们使用java.util.Timerjava.util.TimerTask来定时查询数据库变化。首先,我们初始化数据库连接,并执行初始查询语句获得初始数据。然后,使用定时器每隔一段时间执行查询语句获取最新的数据库数据,并进行处理。在程序运行一段时间后,我们关闭连接并取消定时器。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐