JDBC3

工具类

  如果每次操作都需要写代码来建立数据的连接的释放连接的话,那么开发的速度和效率会很低。这时我们应该考虑将数据的连接和释放进行封装。这样就不必每次都编写连接和释放的代码了,只需调用已经编写好的即可。

普通的抽取

public class ToolsV1 {
    /**
     * 公共连接数据库
     * @return Connection
     */
    public static Connection Conn(){
        Connection conn = null;
        try {
            // 1,注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2,获取Connection连接 
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/java", "root", "root");    
        } catch (Exception e) {
            e.printStackTrace();
        }
        //3,返回获取到的连接
        return conn;
    }

    /**
     * 公共释放数据库连接
     */
    public static void release(Connection conn, PreparedStatement prep, ResultSet re){
        try {
            if (re!=null){re.close();}
            if (prep!=null){prep.close();}
            if (conn!=null){conn.close();}
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用配置文件

使用ResourceBundle

编写配置文件

 在src下新建db.propertie文件,【注意文件后缀要为.propertie的文件】。内容如下:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/java?useUnicode=true&characterEncoding=utf8
username=root
password=root

具体实现

 具体实现如下:

public class ToolsV2 {
    /**
     * 公共连接数据库
     * @return Connection
     */

     private static String driver = null;
    private static String url = null;
    private static String username = null;
    private static String password = null;

    //静态代码块加载配置文件
    static{
        //载入配置文件
        ResourceBundle bund = ResourceBundle.getBundle("db");
        driver = bund.getString("driver");
        url = bund.getString("url");
        username = bund.getString("username");
        password = bund.getString("password");
    }

    public static Connection Conn(){
        Connection conn = null;

        try {
            // 注册驱动
            Class.forName(driver);
            // 获取Connection连接 
            conn = DriverManager.getConnection(url, username, password);    
        } catch (Exception e) {
            e.printStackTrace();
        }
        //返回获取到的连接
        return conn;
    }

    /**
     * 公共释放数据库连接
     */
    public static void release(Connection conn, PreparedStatement prep, ResultSet re){
        try {
            if (re!=null){re.close();}
            if (prep!=null){prep.close();}
            if (conn!=null){conn.close();}
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用Properties文件流

编写配置文件

 在src下新建db.propertie文件,【注意文件后缀要为.propertie的文件】。内容如下:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/java?useUnicode=true&characterEncoding=utf8
username=root
password=root

具体实现

 具体实现如下:

public class ToolsV3 {
    /**
     * 公共连接数据库
     * @return Connection
     */

     private static String driver = null;
    private static String url = null;
    private static String username = null;
    private static String password = null;

    //静态代码块加载配置文件
    static{    
        //通过类加载器
        try {
            //获取当前类的类加载器
            ClassLoader classLoader = ToolsV3.class.getClassLoader();
            //通过类加载器的方法获取到一个输入流
            InputStream is = classLoader.getResourceAsStream("db.properties");
            //实例化一个Properties对象
            Properties pro = new Properties();
            //加载一个输入流
            pro.load(is);
            //获取相关参数的值
            driver = pro.getProperty("driver");
            url = pro.getProperty("url");
            username = pro.getProperty("username");
            password = pro.getProperty("password");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Connection Conn(){
        Connection conn = null;

        try {
            // 注册驱动
            Class.forName(driver);
            // 获取Connection连接 
            conn = DriverManager.getConnection(url, username, password);    
        } catch (Exception e) {
            e.printStackTrace();
        }
        //返回获取到的连接
        return conn;
    }

    /**
     * 公共释放数据库连接
     */
    public static void release(Connection conn, PreparedStatement prep, ResultSet re){
        try {
            if (re!=null){re.close();}
            if (prep!=null){prep.close();}
            if (conn!=null){conn.close();}
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

调用

 将其中的ToolsV3根据情况具体对应调用就行。例如,使用普通抽取就使用ToolsV1,使用ResourceBundle就调用ToolsV2

具体实现
public class JDBC_Tools_Test {
    @Test
    public void JDBC_Test(){
        Connection conn = null;
        PreparedStatement prep = null;
        ResultSet result = null;
        try {
            //1,调用刚刚写好的工具类,获取连接
            conn = ToolsV3.Conn();
            //2,编写SQL模版
            prep = conn.prepareStatement("select * from user where id=?");
            //3,为sql赋值
            prep.setInt(1, 1);
            //4,执行sql
            result = prep.executeQuery();
            if (result.next()){
                System.out.println(result.getString(1));
            }
            //5,获取结果集        
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            ToolsV3.release(conn, prep, result);
        }


    }
}