Java使用try-with-resources关闭JDBC数据库资源

这篇文章演示了如何使用 try-with-resources,顺序关闭JDBC数据库资源- 结果集, 语句和 连接

try-with-resources是一种新的异常处理机制,使得它更容易被一个try-catch块内使用正确关闭资源。从Java 7开始提供。

Java 7之前的示例

如果使用旧版应用程序,则经常会遇到这种异常处理方式:

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.sql.Connection;

import java.sql.DriverManager;

 

public class MySqlJdbcSample {

    public static void main(String... a) {

        Connection connection = null;

        Statement stmt = null;

        ResultSet rs = null;

       

        try {

            Class.forName("com.mysql.jdbc.Driver");

            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/turretadb", "root", "password");

            stmt = connection.createStatement();

            rs = stmt.executeQuery("SELECT LASTNAME, FIRSTNAME, MIDDLENAME FROM PERSON");

            while(rs.next()) {

                System.out.println("LASTNAME: " + rs.getString("LASTNAME"));

                System.out.println("MIDDLENAME: " + rs.getString("MIDDLENAME"));

                System.out.println("FIRSTNAME: " + rs.getString("FIRSTNAME"));

                System.out.println("================================================");

            }

        } catch (SQLException e) {

            e.printStackTrace();

        } catch (ClassNotFoundException e) {

            e.printStackTrace();

        } finally {

           

            if(rs != null) {

                try {

                    rs.close();

                } catch (SQLException e) {

                    e.printStackTrace();

                }

            }

           

            if(stmt != null) {

                try {

                    stmt.close();

                } catch (SQLException e) {

                    e.printStackTrace();

                }

            }

           

            if(connection != null) {

                try {

                    connection.close();

                } catch (SQLException e) {

                    e.printStackTrace();

                }

            }

        }

    }

}

 

使用 try - with - resources语句

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.sql.Connection;

import java.sql.DriverManager;

 

// Requires Java 7+

public class MySqlJdbcSample throws ClassNotFoundException{

    public static void main(String... a) {

      

       Class.forName("com.mysql.jdbc.Driver");

       

        try (

           Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/turretadb", "root", "password");

           Statement stmt = connection.createStatement();

           ResultSet rs = stmt.executeQuery("SELECT LASTNAME, FIRSTNAME, MIDDLENAME FROM PERSON")

           ) {

           

            while(rs.next()) {

                System.out.println("LASTNAME: " + rs.getString("LASTNAME"));

                System.out.println("MIDDLENAME: " + rs.getString("MIDDLENAME"));

                System.out.println("FIRSTNAME: " + rs.getString("FIRSTNAME"));

                System.out.println("================================================");

            }

        }

    }

}

这些代码之所以有效,是因为 try - with - resources语句以打开它们的相反顺序关闭了资源。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值