【Java 基础】33 JDBC
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,我们可以轻松地与数据库进行交互,实现数据的存取和管理。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!