1 JDBC概述
JDBC是一个Java API,它提供了一种执行SQL语句的方法,允许Java程序连接到数据库并进行数据操作。JDBC隐藏了数据库管理系统(DBMS)的复杂性,为开发者提供了一个简单、统一的接口。
2 JDBC驱动
JDBC通过驱动程序与数据库进行通信。每种数据库(如MySQL、Oracle、PostgreSQL等)都有自己的JDBC驱动,它充当了Java应用和数据库之间的桥梁。
3 JDBC URL
JDBC URL是一个字符串,它指定了数据库的地址、数据库名、端口号等信息。它的格式通常如下:
jdbc:<subprotocol>:<subname>
例如,连接到MySQL数据库的URL可能如下:
jdbc:mysql://localhost:3306/mydatabase
4 建立连接
使用JDBC与数据库建立连接需要以下步骤:
-
加载数据库驱动。
-
创建数据库连接。
示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JdbcConnectionExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "user";
String password = "password";
try {
// 加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 创建数据库连接
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println("Database connection established.");
// 在这里执行数据库操作...
// 关闭连接
connection.close();
} catch (ClassNotFoundException e) {
System.out.println("JDBC Driver not found.");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("Database connection failed.");
e.printStackTrace();
}
}
}
5 执行SQL语句
一旦建立了连接,就可以使用Statement
、PreparedStatement
或CallableStatement
对象执行SQL语句。
-
Statement:用于执行静态SQL语句。
-
PreparedStatement:用于执行参数化的SQL语句,可以提高性能并防止SQL注入攻击。
-
CallableStatement:用于执行数据库中的存储过程。
示例代码(使用Statement):
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JdbcStatementExample {
public static void main(String[] args) {
// 假设已经建立了connection对象
try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "user", "password");
Statement statement = connection.createStatement()) {
// 执行查询
ResultSet resultSet = statement.executeQuery("SELECT * FROM mytable");
// 处理结果集
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
6 处理结果集
ResultSet
对象包含了执行查询后返回的数据。可以通过调用ResultSet
的方法来遍历结果集,并获取每列的值。
7 事务处理
JDBC支持事务处理,允许你将一系列操作作为一个单元进行提交或回滚。
示例代码(事务处理):
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JdbcTransactionExample {
public static void main(String[] args) {
Connection connection = null;
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "user", "password");
connection.setAutoCommit(false); // 开始事务
// 执行一些数据库操作...
connection.commit(); // 提交事务
} catch (SQLException e) {
if (connection != null) {
try {
connection.rollback(); // 回滚事务
} catch (SQLException ex) {
ex.printStackTrace();
}
}
e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.setAutoCommit(true); // 重置自动提交
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
8 关闭资源
执行完数据库操作后,应该关闭ResultSet
、Statement
和Connection
等资源,以释放数据库资源。
通过这一节的学习,你现在应该对JDBC基础有了深入的理解。JDBC是Java程序与数据库交互的桥梁,它允许程序执行SQL语句、处理结果集以及管理事务。掌握JDBC,就像是拥有了打开Java秘密金库的钥匙,可以有效地存取和管理数据。下一节,我们将探讨SQL与数据库交互,这是Java数据库编程的核心。