数据库连接是通过 JDBC 驱动程序与数据库之间建立的。它包含了与数据库通信所需的信息,如用户名、密码等。连接成功后,可以创建 Statement 对象用于执行 SQL 查询。
使用 JDBC 连接数据库的步骤通常为:
数据库驱动程序是 JDBC 的核心组件之一。它是一个实现了 JDBC 接口的类,用于与特定的数据库进行通信。不同的数据库有不同的驱动程序,例如,MySQL 驱动、PostgreSQL 驱动等。在连接数据库之前,需要加载相应的数据库驱动程序。这可以通过 Class.forName()
方法来完成
Class.forName("com.mysql.cj.jdbc.Driver");
JDBC URL 是连接数据库的标准格式,包含了数据库的地址、端口、数据库名称等信息
它的格式通常为:
jdbc:数据库类型://主机:端口/数据库名称
例如,连接到 MySQL 数据库的 JDBC URL 可能如下:
jdbc:mysql://db-server:3306/test
使用 DriverManager.getConnection()
方法来建立数据库连接:
javaCopy codeString url = "jdbc:mysql://db-server:3306/test";
String username = "root";
String password = "password";
Connection connection = DriverManager.getConnection(url, username, password);
我们在开发中常用的操作大概有,插入数据、查询数据、事务等等
使用 CREATE TABLE IF NOT EXISTS
语句创建名为 t_user
的表,该表包含 id
、name
和 age
列。
String createTableSQL = "CREATE TABLE IF NOT EXISTS t_user (" +
"id INT PRIMARY KEY AUTO_INCREMENT," +
"name VARCHAR(255)," +
"age INT)";
try (PreparedStatement preparedStatement = connection.prepareStatement(createTableSQL)) {
preparedStatement.execute();
}
使用 INSERT INTO
语句向表中插入一条数据。
String insertDataSQL = "INSERT INTO t_user (name, age) VALUES (?, ?)";
try (PreparedStatement preparedStatement = connection.prepareStatement(insertDataSQL)) {
preparedStatement.setString(1, "Cheney");
preparedStatement.setInt(2, 18);
preparedStatement.executeUpdate();
}
使用 SELECT * FROM t_user
查询表中的所有数据,并打印结果。
String queryDataSQL = "SELECT * FROM t_user";
try (PreparedStatement preparedStatement = connection.prepareStatement(queryDataSQL)) {
try (ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
}
}
}
PreparedStatement
可以提高执行 SQL 语句的性能,并且能够更好地防止 SQL 注入攻击
String sql = "INSERT INTO t_user (name, age) VALUES (?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "cheney");
preparedStatement.setInt(2, 18);
int num = preparedStatement.executeUpdate();
使用 Connection
对象的 setAutoCommit()
方法来开启或关闭事务,并通过 commit()
和 rollback()
方法来提交或回滚事务
try {
// 关闭事务的自动提交
connection.setAutoCommit(false);
// insert等操作
// 手动提交事务
connection.commit();
} catch (SQLException e) {
// 出错误时 事务回滚
connection.rollback();
} finally {
// 恢复事务的自动提交
connection.setAutoCommit(true);
}
资源的释放
使用完 Connection
、Statement
和 ResultSet
后,务必及时关闭资源,以免资源泄漏。
try {
// 执行数据库操作
} finally {
// 关闭资源
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
}
异常处理
在与数据库交互时,务必捕获并处理可能发生的 SQLException
。
try {
// 执行数据库操作
} catch (SQLException e) {
// 处理异常
e.printStackTrace();
}
连接池
在实际应用中,考虑使用连接池来管理数据库连接,以提高性能和资源利用率。
Java JDBC 提供了连接和操作关系型数据库的标准接口,通过这些接口,我们可以在 Java 程序中执行各种数据库操作。本文深入介绍了 JDBC 的基本概念、建立数据库连接的步骤,以及常见的数据库操作。通过合理使用 JDBC,我们可以轻松地与数据库进行交互,实现数据的存取和管理。