import java.sql.*; public class TableMonitor { public static void main(String[] args) { try { // 加载数据库驱动程序 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 连接数据库 Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=GD2030", "sa", "root"); // 创建扩展事件会话 Statement stmt = conn.createStatement(); String createSessionSql = "CREATE EVENT SESSION MyTableChanges ON SERVER ADD EVENT sqlserver.sp_statement_completed (WHERE object_name = 'Client')"; stmt.execute(createSessionSql); // 启动扩展事件会话 String startSessionSql = "ALTER EVENT SESSION MyTableChanges ON SERVER STATE = START"; stmt.execute(startSessionSql); // 监听扩展事件会话 String listenSql = "SELECT * FROM sys.fn_xe_file_target_read_file('C:\\MyTableChanges.xel', null, null, null)"; PreparedStatement pstmt = conn.prepareStatement(listenSql); ResultSet rs = pstmt.executeQuery(); // 处理扩展事件 while (rs.next()) { String event = rs.getString(1); System.out.println(event); } // 关闭连接 rs.close(); pstmt.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } },把这段代码改成java8能运行,并且SQL版本是SQLSERVER2008R2
时间: 2024-01-29 10:01:58 浏览: 113
为了让这段代码能在 Java 8 运行并且连接 SQL Server 2008 R2,你需要对代码进行以下修改:
1. 更改 JDBC 驱动程序的版本:将 "com.microsoft.sqlserver.jdbc.SQLServerDriver" 更改为 "com.microsoft.sqlserver.jdbc.SQLServerDriver:sqljdbc4.0"。这是 SQL Server 2008 R2 支持的 JDBC 驱动程序版本。
2. 更改连接字符串:将连接字符串中的 SQL Server 端口号从 1433 更改为 SQL Server 2008 R2 实例的端口号。
修改后的代码如下:
```
import java.sql.*;
public class TableMonitor {
public static void main(String[] args) {
try {
// 加载数据库驱动程序
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver:sqljdbc4.0");
// 连接数据库
Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1434;DatabaseName=GD2030", "sa", "root");
// 创建扩展事件会话
Statement stmt = conn.createStatement();
String createSessionSql = "CREATE EVENT SESSION MyTableChanges ON SERVER ADD EVENT sqlserver.sp_statement_completed (WHERE object_name = 'Client')";
stmt.execute(createSessionSql);
// 启动扩展事件会话
String startSessionSql = "ALTER EVENT SESSION MyTableChanges ON SERVER STATE = START";
stmt.execute(startSessionSql);
// 监听扩展事件会话
String listenSql = "SELECT * FROM sys.fn_xe_file_target_read_file('C:\\MyTableChanges.xel', null, null, null)";
PreparedStatement pstmt = conn.prepareStatement(listenSql);
ResultSet rs = pstmt.executeQuery();
// 处理扩展事件
while (rs.next()) {
String event = rs.getString(1);
System.out.println(event);
}
// 关闭连接
rs.close();
pstmt.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
请注意,这个修改仅适用于 SQL Server 2008 R2 和 Java 8,如果你要连接其他版本的 SQL Server 或使用其他版本的 Java,可能需要根据实际情况进行修改。
阅读全文