JDBC系列三

来源:互联网 发布:我国云计算市场规模 编辑:程序博客网 时间:2024/05/22 12:20

再次分享一段代码

 

package viekie.du.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import java.sql.PreparedStatement;

public final class DBUtil {

    private static final String USERNAME = "root";
    private static final String PASSWORD = "xxx";
    private static final String URL = "jdbc:mysql://localhost:3306/jdbc";
    private static final String DRIVER = "com.mysql.jdbc.Driver";

    private static DBUtil instance = null;

    private DBUtil() {
    }

    public static DBUtil getInstance() {
        if (null == instance) {
            synchronized (DBUtil.class) {
                if (null == instance) {
                    instance = new DBUtil();
                }
            }


        }
        return instance;
    }

    static {
        try {
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            throw new ExceptionInInitializerError(e);
        }
    }

    public Connection getConnection() throws SQLException {

        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }

    public PreparedStatement getPreparedStatement(Connection conn, String sql)
            throws Exception {
        return conn.prepareStatement(sql);
    }

    public void releaseConnection(Connection conn) {

        if (null != conn) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public void releaseStatemetn(Statement stmt) {

        if (null != stmt) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public void releaseResultSet(ResultSet rs) {

        if (null != rs) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

 

分享这段代码的原因是DBUtil使用了单例模式,并且标记为蓝颜色的代码块,使用了synchronized关键字,标记为同步代码块。而且是延迟加载。