【Java 基础】33 JDBC

2023-12-23 18:20:57


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 的表,该表包含 idnameage 列。

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. 注意事项

  • 资源的释放

    使用完 ConnectionStatementResultSet 后,务必及时关闭资源,以免资源泄漏。

     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,我们可以轻松地与数据库进行交互,实现数据的存取和管理。

文章来源:https://blog.csdn.net/yanyc0411/article/details/135169467
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。