java.sql 的close()

本文详细介绍了数据库操作中ResultSet的获取方法及资源管理的最佳实践,包括如何正确使用Statement执行SQL查询并获取结果集,以及在不同场景下资源关闭的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DB.java

public static ResultSet getResultSet(Statement stmt, String sql) {
		ResultSet rs = null;
		try {
			if (stmt != null) {
				rs = stmt.executeQuery(sql);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return rs;
//stmt.close();//返回的rs 在调用的文件里无法使用;
	}
//而在调用的文件内,关闭stmt,对应的 PreparedStatement 资源也会自动关闭;同样若只关闭Connection,则与之对应的stmt,rs等相关资源也会被关闭,但这显然不是良好的编程习惯;

转载于:https://my.oschina.net/u/215476/blog/57030

### Java 中使用 JDBC 进行数据库连接与查询的指南 Java 数据库连接(JDBC)是一种用于执行 SQL 语句的 Java API,它允许 Java 应用程序与各种关系型数据库进行交互。以下是关于如何使用 JDBC 进行数据库连接和查询的详细指南。 #### 1. 配置 JDBC 驱动 在开始之前,确保已将相应的 JDBC 驱动添加到项目的类路径中。例如,在连接 Microsoft SQL Server 数据库时,需要下载并导入 `com.microsoft.sqlserver.jdbc.SQLServerDriver`。如果缺少此驱动,可能会遇到 `java.lang.ClassNotFoundException` 异常[^2]。 #### 2. 建立数据库连接 建立数据库连接通常涉及以下几个关键步骤: - **加载驱动程序**:通过 `Class.forName()` 方法加载数据库驱动。 - **获取连接对象**:使用 `DriverManager.getConnection()` 方法来建立连接。 以下是一个示例代码片段,展示如何连接到 MySQL 数据库: ```java import java.sql.Connection; import java.sql.DriverManager; public class DatabaseConnection { public static void main(String[] args) { String url = "jdbc:mysql://127.0.0.1:3306/atguigu"; String username = "root"; String password = "lsl12345"; try { // 加载驱动程序 Class.forName("com.mysql.cj.jdbc.Driver"); // 获取数据库连接 Connection connection = DriverManager.getConnection(url, username, password); System.out.println("数据库连接成功!"); // 关闭连接 connection.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` #### 3. 执行 SQL 查询 一旦建立了数据库连接,就可以创建一个 `Statement` 对象,并使用它来执行 SQL 查询。以下是一个完整的示例,演示如何从数据库中检索数据: ```java import java.sql.*; public class DatabaseQuery { public static void main(String[] args) { String url = "jdbc:mysql://127.0.0.1:3306/atguigu"; String username = "root"; String password = "lsl12345"; try { // 加载驱动程序 Class.forName("com.mysql.cj.jdbc.Driver"); // 获取数据库连接 Connection connection = DriverManager.getConnection(url, username, password); // 创建 Statement 对象 Statement statement = connection.createStatement(); // 执行 SQL 查询 String sql = "SELECT * FROM t_user"; ResultSet resultSet = statement.executeQuery(sql); // 处理结果集 while (resultSet.next()) { int id = resultSet.getInt("id"); String account = resultSet.getString("account"); String pwd = resultSet.getString("password"); String nickname = resultSet.getString("nickname"); System.out.println(id + "--" + account + "--" + pwd + "--" + nickname); } // 关闭资源 resultSet.close(); statement.close(); connection.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` #### 4. 使用连接池优化性能 为了提高应用程序的性能,可以使用数据库连接池技术。常见的连接池实现包括 Apache DBCP、C3P0 和 Druid 等。下面是一个使用 Druid 连接池的配置示例: ```properties driverClassName=com.mysql.cj.jdbc.Driver username=root password=123456 url=jdbc:mysql:///java2207?serverTimezone=Asia/Shanghai maxWait=60000 initialSize=100 maxActive=200 minIdle=10 ``` #### 5. 常见问题及注意事项 - **ClassNotFoundException**:确保 JDBC 驱动已正确添加到项目依赖或类路径中[^2]。 - **SQL 注入攻击**:避免直接拼接 SQL 语句,建议使用 `PreparedStatement` 来防止 SQL 注入。 - **资源泄漏**:务必关闭所有打开的数据库资源(如 `ResultSet`, `Statement`, `Connection`),以避免内存泄漏。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值