(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)
目录
一、JDBC简介
1.1 什么是JDBC
1.2 JDBC的作用
1.3 JDBC的架构
二、JDBC核心接口与类
2.1 DriverManager
2.2 Connection
2.3 Statement
2.4 PreparedStatement
2.5 ResultSet
三、JDBC操作数据库的基本步骤
四、代码示例
以下是一个使用JDBC连接MySQL数据库并执行查询操作的简单示例。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.DriverManager
public class JDBCExample {
public static void main(String[] args) {
// 1. 加载并注册JDBC驱动(通常使用Class.forName()自动完成)
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
return;
}
// 2. 建立数据库连接
String url = "jdbc:mysql://localhost:3306/yourdatabase?
useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
String user = "yourusername";
String password = "yourpassword";
Connection conn = null;
try {
conn = DriverManager.getConnection(url, user, password);
// 3. 创建Statement对象
Statement stmt = conn.createStatement();
// 4. 执行SQL查询语句
String sql = "SELECT * FROM yourtable";
ResultSet rs = stmt.executeQuery(sql);
// 5. 处理结果集
while (rs.next()) {
// 假设我们查询的表有一个名为"id"和一个名为"name"的列
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 6. 关闭连接,释放资源
try {
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
五、深入JDBC的高级特性与性能优化
5.1 批处理(Batch Processing)
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO yourtable (column1, column2) VALUES (?, ?)");
for (int i = 0; i < 1000; i++) {
pstmt.setString(1, "value1_" + i);
pstmt.setInt(2, i);
pstmt.addBatch();
if (i % 100 == 0) { // 每100条执行一次批处理
pstmt.executeBatch();
pstmt.clearBatch();
}
}
if (pstmt.getBatchCount() > 0) {
pstmt.executeBatch();
pstmt.clearBatch();
}
5.2 事务管理
try {
conn.setAutoCommit(false);
// 执行一系列数据库操作
// ...
conn.commit(); // 提交事务
} catch (Exception e) {
try {
conn.rollback(); // 发生异常时回滚事务
} catch (SQLException se) {
se.printStackTrace();
}
} finally {
conn.setAutoCommit(true); // 恢复自动提交
}