A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.itheima.utils;

import java.io.FileReader;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import com.itheima.jdbc.Demo01;

public class JDBCUtils {
        /*
         * 提供方法获得连接
         */
        public static Connection getConnection() {
                Connection conn = null;
                try {
                        // FileReader reader = new FileReader("jdbc.properties");
                        // 只能读取项目根目录下面的配置文件

                        /*
                         * JAVA在运行是,会去项目对应类的字节码文件(.class)所在的根目录(D:\itcast代码\ee43\day09\bin),使用类加载器ClassLoader,
                         * 放置到JAVA虚拟机中执行
                         */
                        InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");

                        // 配置文件的工具类
                        Properties prop = new Properties();
                        // 加载文件流
                        prop.load(in);
                        String driver = prop.getProperty("jdbc.driver");
                        String url = prop.getProperty("jdbc.url");
                        String username = prop.getProperty("jdbc.username");
                        String password = prop.getProperty("jdbc.password");

                        Class.forName(driver);
                        // 2获得连接
                        conn = DriverManager.getConnection(url, username, password);
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return conn;

        }

        /*
         * 释放资源
         */
        public static void closeResource(ResultSet rs, Statement st, Connection conn) {
                try {
                        if (rs != null) {// 调用closeResource方式时,参数有可能为null
                                rs.close();
                        }
                } catch (SQLException e) {
                        e.printStackTrace();
                } finally { // 即使resultSet关闭失败,finally语句块也会被执行
                        try {
                                if (st != null) {
                                        st.close();
                                }
                        } catch (SQLException e) {
                                e.printStackTrace();
                        } finally {
                                try {
                                        if (conn != null) {
                                                conn.close();
                                        }
                                } catch (SQLException e) {
                                        e.printStackTrace();
                                }
                        }
                }

        }
}


请问下面这句中的流为什么不关?不是说流都要关闭的么?
InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");

3 个回复

倒序浏览
回复 使用道具 举报

看到你这个冲击之刃我也知道你是谁了!
回复 使用道具 举报
河边捉虾米 发表于 2016-11-17 23:49
看到你这个冲击之刃我也知道你是谁了!

拥抱暗影吧
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马