您的位置:首页 > 编程语言 > Java开发

一般JDBC的常见写法(附懒汉式 && 饿汉式)

2017-01-13 21:14 393 查看
首先在建个DbUtil文件,里面返回Connection、关闭方法等,如下所示:

[java]
view plain
copy

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
import java.sql.Statement;  
  
/** 
 * 数据库工具类(获取连接、释放资源) 
 *  
 * @author YUSHIBUJUE 
 *  
 */  
public abstract class DbUtil {  
      
    // 只需要执行一次  
    static{  
        try {  
            System.out.println("注册数据库驱动......");  
            Class.forName("com.mysql.jdbc.Driver");  
        } catch (ClassNotFoundException e) {  
            throw new RuntimeException("注册数据库驱动出现异常:"+e.getMessage());  
        }  
    }  
    /** 
     * 获取一个连接对象 
     * @return 
     */  
    public static Connection getConn() {  
        String url = "jdbc:mysql://localhost/flightsystem?characterEncoding=GBK";  
        try {  
            return DriverManager.getConnection(url, "root", "root");  
        } catch (SQLException ex1) {  
            throw new RuntimeException("无法获取连接,原因:"+ex1.getMessage());  
        }  
    }  
      
      
    public static void free(ResultSet rs, Statement st, Connection conn) {  
        try {  
            if (null != rs) {  
                rs.close();  
                System.out.println("ResultSet已关闭!");  
            }  
        } catch (SQLException e) {  
            throw new RuntimeException("关闭ResultSet出现异常:" + e.getMessage());  
        } finally {  
            try {  
                if (null != st) {  
                    st.close();  
                    System.out.println("Statement已关闭!");  
                }  
            } catch (SQLException e) {  
                throw new RuntimeException("关闭Statement出现异常:" + e.getMessage());  
            } finally {  
                if (null != conn) {  
                    try {  
                        conn.close();  
                        System.out.println("Connection已关闭!");  
                    } catch (SQLException e) {  
                        throw new RuntimeException("关闭Connection出现异常:"  
                                + e.getMessage());  
                    }  
                }  
            }  
        }  
  
    }  
}  

接着在使用JDBC的地方,调用free(),如下:



原文出处:http://blog.csdn.net/xuan6251237011/article/details/12089311

懒汉式

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class DatabaseConnection {

    private static final String DBDRIVER = "org.gjt.mm.mysql.Driver";

    private static final String DBURL = "jdbc:mysql://localhost:3306/test";

    private static final String DBUSER = "root";

    private static final String PASSWORD = "admin";

    private Connection conn = null;

    // 如果要实例化本类对象,实际上就是为了取得数据库连接,那么就把连接过程交给构造方法

    public DatabaseConnection() {

        try {

            Class.forName(DBDRIVER);

            this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);

        } catch (ClassNotFoundException e) {

            e.printStackTrace();

        } catch (SQLException e) {

            e.printStackTrace();

        }

    }

    public Connection getConnection() {

        return this.conn;

    }

    public void close() {

        if (this.conn != null) {

            try { // 关闭时几乎不会有问题

                this.conn.close();

            } catch (SQLException e) {

                e.printStackTrace();

            }

        }

    }

}

饿汉式

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class DataBaseConnection {

    private static final String DBDRIVER = "org.gjt.mm.mysql.Driver";

    private static final String DBURL = "jdbc:mysql://localhost:3306/test";

    private static final String DBUSER = "root";

    private static final String PASSWORD = "admin";

    public Connection conn;

    //饿汉式数据库连接

    public Connection getConnection() {

        try {

            if (conn == null && conn.isClosed())

                Class.forName(DBDRIVER);

            conn = DriverManager.getConnection(DBURL, DBUSER, PASSWORD);

        } catch (ClassNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (SQLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        return conn;

    }

    public void close(){

        if(conn != null){

            try {

                this.conn.close();

            } catch (SQLException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java ee