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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gaogan2017 初级黑马   /  2018-8-16 08:38  /  1403 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 gaogan2017 于 2018-8-16 08:48 编辑

刚来的我是这样的:
[Java] 纯文本查看 复制代码
[/b][/size][/color]
[color=#000000][size=3][b]package first;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
   }
}

现在的我是这样的:



[Java] 纯文本查看 复制代码
[/b][/size]
[size=3][b]JDBCUtils  工具类 
/**
 * 抽取工具类
 * 需要抽取的
 * 注册驱动
 * 抽取的获取连接的方法
 */
public class JDBCUtils {//所以工具类的方法都是静态的方便调用
    /**
     * 不想传参(麻烦) 但还要有通用性
     * 使用配置文件的形式来解决
     * 文件的读取只需要读取一次就可以了,不然每次调用该工具类每次都会做无用的读取
     * 所以使用静态代码块
     */
    //设置静态是为了让下面的静态代码块读到
    private static String url;
    private static String user;
    private static String password;
    private static String driver;[/b][/size]
[p=30, 2, left][size=3][b]    //静态代码块
    static {
        Properties pro = new Properties();
        InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
        try {
            pro.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //把从配置文件中读取到的信息赋值给三个成员变量
        url = pro.getProperty("url");
        user = pro.getProperty("user");
        password = pro.getProperty("password");
        driver = pro.getProperty("driver");[/b][/size][/p][p=30, 2, left][size=3][b]        //注册驱动(也想做成通用的)
        try {[/b][/size][/p][p=30, 2, left][size=3][b]            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    /**
     * 获取连接*
     * @return conn连接对象
     */
    public static Connection geConnection() throws SQLException {
        
        return DriverManager.getConnection(url, user, password);
    }
    /**
     * 释放资源*
     * @param conn
     * @param state
     */
    public static void close(PreparedStatement state, Connection conn) {
        if (state != null) {
            try {
                state.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        //不可以写在同一个try里面,防止state出现异常导致conn无法执行;
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 释放资源  重载加上ResultSet 结果集*
     * @param conn
     * @param state
     */
    public static void close(ResultSet rs, PreparedStatement state, Connection conn) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (state != null) {
            try {
                state.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }[/b][/size][/p][p=30, 2, left][size=3][b]测试类:[/b][/size][/p][p=30, 2, left][size=3][b]//测试工具类
public class UtilsTest {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            //调用工具类方法 可以替换注册和连接的步骤
            conn = JDBCUtils.geConnection();
            String sql = "SELECT * FROM emp WHERE gender = ?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setObject(1, "男");
            rs = pstmt.executeQuery();[/b][/size][/p][p=30, 2, left][size=3][b]            while (rs.next()) {
                Object id = rs.getObject("id");
                Object name = rs.getObject("name");
                Object salary = rs.getObject("salary");
                Object join_date = rs.getObject("join_date");
                Object dept_id = rs.getObject("dept_id");
                System.out.println(id + "---" + name + "---" + salary + "---" + join_date + "---" + dept_id);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //关闭更便捷
            JDBCUtils.close(rs, pstmt, conn);
        }
    }
}[/b][/size][/p]
[size=3][b]







0 个回复

您需要登录后才可以回帖 登录 | 加入黑马