我将为你详细介绍Java中JDBC实现往MySQL插入百万级数据的攻略,包括以下内容:
- JDBC简介
- JDBC连接MySQL数据库的步骤
- 插入百万级数据的实现步骤
- 两条示例
1. JDBC简介
JDBC(Java Database Connectivity)是Java平台中用于执行SQL语句的一组API。使用JDBC可以连接各种各样的关系型数据库,如MySQL、Oracle、SQL Server等。
2. JDBC连接MySQL数据库的步骤
连接MySQL数据库需要遵循以下步骤:
- 加载MySQL JDBC驱动程序。
- 创建连接并打开数据库。
- 创建Statement或PreparedStatement对象。
- 执行SQL语句。
- 处理查询结果和异常。
- 关闭连接和释放资源。
下面是一个连接MySQL数据库的示例代码:
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
String sql = "SELECT * FROM user";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 加载MySQL JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 创建连接并打开数据库
conn = DriverManager.getConnection(url, user, password);
// 创建Statement对象
stmt = conn.createStatement();
// 执行SQL语句
rs = stmt.executeQuery(sql);
// 处理查询结果
while (rs.next()) {
System.out.println(rs.getInt("id") + "," + rs.getString("name"));
}
} catch (ClassNotFoundException | SQLException 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();
}
}
}
}
3. 插入百万级数据的实现步骤
插入百万级数据需要遵循以下步骤:
- 加载MySQL JDBC驱动程序。
- 创建连接并打开数据库。
- 创建PreparedStatement对象。
- 使用批处理提高插入性能。
- 执行批处理。
- 处理结果和异常。
- 关闭连接和释放资源。
下面是一个插入百万级数据的示例代码:
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 加载MySQL JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 创建连接并打开数据库
conn = DriverManager.getConnection(url, user, password);
// 创建PreparedStatement对象
String sql = "INSERT INTO user(id, name) VALUES(?, ?)";
pstmt = conn.prepareStatement(sql);
// 使用批处理插入数据
int batchSize = 1000;
for (int i = 1; i <= 1000000; i++) {
pstmt.setInt(1, i);
pstmt.setString(2, "User" + i);
pstmt.addBatch();
if (i % batchSize == 0) {
pstmt.executeBatch();
}
}
pstmt.executeBatch();
System.out.println("插入数据成功!");
} catch (ClassNotFoundException | SQLException e) {
// 处理异常
e.printStackTrace();
} finally {
// 关闭连接和释放资源
try {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
4. 两条示例
下面是两条Java中JDBC实现往MySQL插入百万级数据的示例:
示例1:使用Statement对象插入数据
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
Connection conn = null;
Statement stmt = null;
try {
// 加载MySQL JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 创建连接并打开数据库
conn = DriverManager.getConnection(url, user, password);
// 创建Statement对象
stmt = conn.createStatement();
// 使用Statement对象插入数据
for (int i = 1; i <= 1000000; i++) {
String sql = "INSERT INTO user(id, name) VALUES(" + i + ", 'User" + i + "')";
stmt.executeUpdate(sql);
}
System.out.println("插入数据成功!");
} catch (ClassNotFoundException | SQLException e) {
// 处理异常
e.printStackTrace();
} finally {
// 关闭连接和释放资源
try {
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
示例2:使用PreparedStatement对象和批处理插入数据
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 加载MySQL JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 创建连接并打开数据库
conn = DriverManager.getConnection(url, user, password);
// 创建PreparedStatement对象
String sql = "INSERT INTO user(id, name) VALUES(?, ?)";
pstmt = conn.prepareStatement(sql);
// 使用批处理插入数据
int batchSize = 1000;
for (int i = 1; i <= 1000000; i++) {
pstmt.setInt(1, i);
pstmt.setString(2, "User" + i);
pstmt.addBatch();
if (i % batchSize == 0) {
pstmt.executeBatch();
}
}
pstmt.executeBatch();
System.out.println("插入数据成功!");
} catch (ClassNotFoundException | SQLException e) {
// 处理异常
e.printStackTrace();
} finally {
// 关闭连接和释放资源
try {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
希望这份攻略能够对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中JDBC实现往MySQL插入百万级数据的实例代码 - Python技术站