文章目录
- 1. 数据库连接
- 1)加载驱动
- 2)建立连接
- 2. 常见操作
- 1)创建表
- 2)插入数据
- 3)查询数据
- 4)使用 PreparedStatement
- 5)事务管理
- 3. 注意事项
- 总结
Java Database Connectivity(JDBC)是 Java 语言中用于与数据库进行交互的 API。它提供了一组类和接口,使得 Java 程序能够连接到各种关系型数据库,并执行查询、更新等数据库操作。本文将深入介绍 Java JDBC 的基本概念、数据库连接的建立,以及常见的数据库操作。
1. 数据库连接
数据库连接是通过 JDBC 驱动程序与数据库之间建立的。它包含了与数据库通信所需的信息,如用户名、密码等。连接成功后,可以创建 Statement 对象用于执行 SQL 查询。
使用 JDBC 连接数据库的步骤通常为:
1)加载驱动
数据库驱动程序是 JDBC 的核心组件之一。它是一个实现了 JDBC 接口的类,用于与特定的数据库进行通信。不同的数据库有不同的驱动程序,例如,MySQL 驱动、PostgreSQL 驱动等。在连接数据库之前,需要加载相应的数据库驱动程序。这可以通过 Class.forName()
方法来完成
Class.forName("com.mysql.cj.jdbc.Driver");
2)建立连接
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);
2. 常见操作
我们在开发中常用的操作大概有,插入数据、查询数据、事务等等
1)创建表
使用 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();
}
2)插入数据
使用 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();
}
3)查询数据
使用 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);}}
}
4)使用 PreparedStatement
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();
5)事务管理
使用 Connection
对象的 setAutoCommit()
方法来开启或关闭事务,并通过 commit()
和 rollback()
方法来提交或回滚事务
try {// 关闭事务的自动提交connection.setAutoCommit(false);// insert等操作// 手动提交事务connection.commit();
} catch (SQLException e) {// 出错误时 事务回滚connection.rollback();
} finally {// 恢复事务的自动提交connection.setAutoCommit(true);
}
3. 注意事项
-
资源的释放
使用完
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,我们可以轻松地与数据库进行交互,实现数据的存取和管理。