Java 手动连接多个数据库
在Java开发中,我们经常需要连接数据库来存储和获取数据。通常情况下,我们会使用数据库驱动程序来连接单个数据库。但是,在某些情况下,我们可能需要连接多个数据库,以便在不同的数据库之间进行数据传输或数据同步。
本文将介绍如何在Java中手动连接多个数据库,并提供代码示例和相应的类图和序列图。
1. 准备工作
在开始之前,我们需要确保已经安装并配置了需要连接的数据库,例如MySQL和Oracle。同时,我们还需要下载并引入相应的数据库驱动程序。
在这里,我们假设已经安装了MySQL和Oracle,并且已经下载了对应的驱动程序。
2. 创建数据库连接类
我们首先需要创建一个数据库连接类,用于连接和操作数据库。这个类将包含连接数据库的逻辑和相应的方法。
类图
使用mermaid语法,我们可以绘制以下类图:
classDiagram
class DatabaseConnection {
- driver: String
- url: String
- username: String
- password: String
+ connect(): Connection
+ executeQuery(sql: String): ResultSet
+ executeUpdate(sql: String): int
+ close(conn: Connection, stmt: Statement, rs: ResultSet)
}
代码示例
public class DatabaseConnection {
private String driver;
private String url;
private String username;
private String password;
public DatabaseConnection(String driver, String url, String username, String password) {
this.driver = driver;
this.url = url;
this.username = username;
this.password = password;
}
public Connection connect() throws ClassNotFoundException, SQLException {
Class.forName(driver);
return DriverManager.getConnection(url, username, password);
}
public ResultSet executeQuery(String sql) throws ClassNotFoundException, SQLException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = connect();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} finally {
close(conn, stmt, rs);
}
return rs;
}
public int executeUpdate(String sql) throws ClassNotFoundException, SQLException {
Connection conn = null;
Statement stmt = null;
try {
conn = connect();
stmt = conn.createStatement();
return stmt.executeUpdate(sql);
} finally {
close(conn, stmt, null);
}
}
public void close(Connection conn, Statement stmt, ResultSet rs) throws SQLException {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
}
这个类包含了连接数据库、执行查询和更新操作以及关闭连接的方法。我们可以根据具体的需求进行扩展和修改。
3. 使用数据库连接类连接多个数据库
在我们创建了数据库连接类之后,我们可以使用它来连接多个数据库,并执行相应的操作。
代码示例
public class Main {
public static void main(String[] args) {
String mysqlDriver = "com.mysql.jdbc.Driver";
String mysqlUrl = "jdbc:mysql://localhost:3306/database1";
String mysqlUsername = "root";
String mysqlPassword = "password1";
String oracleDriver = "oracle.jdbc.driver.OracleDriver";
String oracleUrl = "jdbc:oracle:thin:@localhost:1521:database2";
String oracleUsername = "system";
String oraclePassword = "password2";
try {
DatabaseConnection mysqlConnection = new DatabaseConnection(mysqlDriver, mysqlUrl, mysqlUsername, mysqlPassword);
DatabaseConnection oracleConnection = new DatabaseConnection(oracleDriver, oracleUrl, oracleUsername, oraclePassword);
// 连接MySQL数据库
Connection mysqlConn = mysqlConnection.connect();
// 执行查询操作
ResultSet mysqlResultSet = mysqlConnection.executeQuery("SELECT * FROM table1");
// 连接Oracle数据库
Connection oracleConn = oracleConnection.connect();
// 执行查询操作
ResultSet oracleResultSet = oracleConnection.executeQuery("SELECT * FROM table2");
// 关闭连接
mysqlConnection.close(mysqlConn, null, mysqlResultSet);
oracleConnection.close(oracleConn, null, oracleResultSet);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
在这个示例中,我们创建了两个数据库连接对象,并分别连接了MySQL和Oracle数据库。我们可以根据实际情况执行相应的查询操作,并关闭连接。
4. 总结
通过这篇文章,我们学习了如何在Java中手动连接多个数据库。