java连接主备数据库进行读写分离
时间: 2023-06-30 18:26:00 浏览: 131
Java连接主备数据库进行读写分离可以使用JDBC的方式进行连接,具体步骤如下:
1. 引入JDBC驱动程序,例如MySQL Connector/J;
2. 创建主库和备库的连接URL,格式为jdbc:mysql://host:port/database,其中host和port分别为主库和备库的IP地址和端口号,database为数据库名称;
3. 创建主库和备库的连接用户名和密码;
4. 根据需要发送读请求或写请求,使用Connection、PreparedStatement、ResultSet等JDBC对象进行操作。
下面是一个使用Java连接主备数据库进行读写分离的示例代码:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MySQLReadWriteSplittingExample {
public static void main(String[] args) {
String masterUrl = "jdbc:mysql://master-server:3306/mydatabase";
String slaveUrl = "jdbc:mysql://slave-server:3306/mydatabase";
String user = "myuser";
String password = "mypassword";
Connection masterConnection = null;
Connection slaveConnection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
try {
// 连接主库
masterConnection = DriverManager.getConnection(masterUrl, user, password);
// 发送读请求
statement = masterConnection.prepareStatement("SELECT * FROM mytable");
resultSet = statement.executeQuery();
// 处理查询结果
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
// 连接备库
slaveConnection = DriverManager.getConnection(slaveUrl, user, password);
// 发送写请求
statement = slaveConnection.prepareStatement("INSERT INTO mytable (id, name) VALUES (?, ?)");
statement.setInt(1, 1);
statement.setString(2, "John Doe");
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 释放资源
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (masterConnection != null) {
masterConnection.close();
}
if (slaveConnection != null) {
slaveConnection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
在上面的示例代码中,我们创建了主库连接和备库连接的URL、用户名和密码,然后分别使用这两个连接对象进行了读操作和写操作。由于使用的是两个独立的连接对象,因此需要分别释放资源。
阅读全文