Java写一个连接数据库且可以修改的监听器
时间: 2024-03-16 17:43:50 浏览: 16
以下是一个Java连接数据库且可以修改的监听器代码示例,假设使用的是PostgreSQL数据库:
``` java
import java.sql.*;
public class DatabaseListener {
public static void main(String[] args) {
Connection conn = connectToDatabase();
listenToDatabase(conn);
}
public static Connection connectToDatabase() {
Connection conn = null;
try {
String url = "jdbc:postgresql://your_host/your_database";
String user = "your_username";
String password = "your_password";
conn = DriverManager.getConnection(url, user, password);
System.out.println("Successfully connected to database!");
} catch (SQLException e) {
System.out.println("Connection failed!");
e.printStackTrace();
}
return conn;
}
public static void listenToDatabase(Connection conn) {
if (conn == null) {
System.out.println("No database connection!");
return;
}
try {
Statement stmt = conn.createStatement();
stmt.execute("LISTEN your_channel;");
System.out.println("Listening to database changes...");
while (true) {
conn.getMetaData().getTables(null, null, null, new String[]{"TABLE"});
ResultSet rs = stmt.getResultSet();
while (rs.next()) {
String channel = rs.getString("payload");
System.out.println("Received notification: " + channel);
// do something with the notification
}
Thread.sleep(1000); // wait for 1 second before checking again
}
} catch (SQLException | InterruptedException e) {
e.printStackTrace();
}
}
}
```
这段代码使用了JDBC连接PostgreSQL数据库,并且使用了一个监听器来监听数据库中指定的频道。你可以通过修改`connectToDatabase()`方法中的连接参数来连接不同的数据库,并且可以在`listenToDatabase()`方法中修改`your_channel`来监听不同的频道。在监听器启动后,它将会不断监听数据库的变化并打印出通知的内容。注意到这里使用了一个无限循环来不断检查是否有新的通知到达,并且在每次检查之间等待了1秒钟,这是为了避免过于频繁的检查导致系统负荷过大。